1#property description CRT-style effect 2 3void main(void) { 4 float pulse = pow(defaultPulse, 0.5); 5 vec2 separate = iIntensity * vec2(0.005, 0.0) * pulse; 6 vec2 normCoord = (uv - 0.5) * aspectCorrection; 7 vec2 redOffset = normCoord - separate; 8 vec2 greenOffset = normCoord; 9 vec2 blueOffset = normCoord + separate; 10 11 vec4 redImage = texture(iInput, redOffset / aspectCorrection + 0.5); 12 vec4 greenImage = texture(iInput, greenOffset / aspectCorrection + 0.5); 13 vec4 blueImage = texture(iInput, blueOffset / aspectCorrection + 0.5); 14 15 vec3 rgb = vec3(redImage.r, greenImage.g, blueImage.b); 16 rgb *= mix(1.0, 1.0 - pow(abs(sin(greenOffset.y * 160.0)), 16.), iIntensity * pulse / 3.0); 17 rgb.r *= mix(1.0, 1.0 - pow(abs(sin(redOffset.x * 200.0)), 6.), iIntensity * pulse); 18 rgb.g *= mix(1.0, 1.0 - pow(abs(sin(greenOffset.x * 200.0)), 6.), iIntensity * pulse); 19 rgb.b *= mix(1.0, 1.0 - pow(abs(sin(blueOffset.x * 200.0)), 6.), iIntensity * pulse); 20 float a_out = max(max(greenImage.a, rgb.r), max(rgb.g, rgb.b)); 21 fragColor = vec4(rgb, a_out); 22} 23