123456789101112131415161718192021222324252627282930313233343536 |
- precision mediump float;
- uniform sampler2D texture;
- // uniform sampler2D srgb_map;
- uniform mat3 color_matrix;
- varying vec2 uv1;
- varying vec2 uv2;
- varying vec2 pixel_coord;
- #define fetch(p) texture2D(texture, p).r
- void main() {
- vec4 pixels = vec4(
- fetch(uv1),
- fetch(vec2(uv1.x, uv2.y)),
- fetch(uv2),
- fetch(vec2(uv2.x, uv1.y)));
- vec2 arrangement = mod(pixel_coord, 2.0);
- vec2 is_top_left = step(1.0, arrangement);
- vec3 color = mix(
- mix(pixels.zyx, pixels.wzy, is_top_left.y),
- mix(pixels.yzw, pixels.xyz, is_top_left.y),
- is_top_left.x);
- vec3 srgb_color = pow(color, vec3(1.0 / 2.2));
- // vec3 srgb_color = vec3(
- // texture2D(srgb_map, vec2(color.r, 0)).r,
- // texture2D(srgb_map, vec2(color.g, 0)).r,
- // texture2D(srgb_map, vec2(color.b, 0)).r);
- gl_FragColor = vec4((color_matrix * srgb_color).bgr, 0);
- }
|