28 lines
847 B
Plaintext
28 lines
847 B
Plaintext
|
#version 120
|
||
|
|
||
|
uniform sampler2D DiffuseSampler;
|
||
|
uniform sampler2D OverlaySampler;
|
||
|
|
||
|
uniform vec2 InSize;
|
||
|
|
||
|
varying vec2 texCoord;
|
||
|
|
||
|
uniform float MosaicSize = 1.0;
|
||
|
uniform vec3 RedMatrix = vec3(1.0, 0.0, 0.0);
|
||
|
uniform vec3 GreenMatrix = vec3(0.0, 1.0, 0.0);
|
||
|
uniform vec3 BlueMatrix = vec3(0.0, 0.0, 1.0);
|
||
|
|
||
|
void main(){
|
||
|
vec2 mosaicInSize = InSize / MosaicSize;
|
||
|
vec2 fractPix = fract(texCoord * mosaicInSize) / mosaicInSize;
|
||
|
|
||
|
vec4 baseTexel = texture2D(DiffuseSampler, texCoord - fractPix);
|
||
|
float red = dot(baseTexel.rgb, RedMatrix);
|
||
|
float green = dot(baseTexel.rgb, GreenMatrix);
|
||
|
float blue = dot(baseTexel.rgb, BlueMatrix);
|
||
|
|
||
|
vec4 overlayTexel = texture2D(OverlaySampler, vec2(texCoord.x, 1.0 - texCoord.y));
|
||
|
overlayTexel.a = 1.0;
|
||
|
gl_FragColor = mix(vec4(red, green, blue, 1.0), overlayTexel, overlayTexel.a);
|
||
|
}
|