@vs vs in vec2 aPos; in vec2 aTexCoords; out vec2 TexCoords; void main() { gl_Position = vec4(aPos.x, aPos.y, 0.0, 1.0); TexCoords = aTexCoords; } @end @fs fs in vec2 TexCoords; out vec4 frag_color; uniform texture2D diffuse; uniform sampler smp; uniform mpara { uniform vec2 screensize; }; void main() { vec4 color = texture(sampler2D(diffuse,smp), TexCoords); float avg = 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b; frag_color = vec4(avg,avg,avg,1.0); float lc = screensize.y/2.0; float line = TexCoords.y * lc; float line_intensity = mod(float(line),2); float off = line_intensity * 0.0005; vec4 shift = vec4(off,0,0,0); vec4 color_shift = vec4(0.001,0,0,0); float r = color.r + color_shift.r + shift.r; float g = color.g - color_shift.g + shift.g; float b = color.b; frag_color = vec4(r, g*0.99, b, 1.0) * clamp(line_intensity, 0.85, 1.0); } @end @program crt vs fs