scanlineFragmentShader top-level property

ShaderObject scanlineFragmentShader
final

Implementation

final ShaderObject scanlineFragmentShader = ShaderObject("ScanlinePixelateF")
  ..AddUniformVars([uTexture, uRange])
  ..SetBody([
    """

// const vec3 comp = vec3(0.05, 0.15, 0.95);
const vec3 comp = vec3(0.1, 0.30, 0.85);

void main() {
    // number scan lines: texture height *
    vec2 sine_coord = ${uRange} * 2.0 * 3.1415;

    sine_coord.x = 0.0;
    vec2 dim = vec2(textureSize(${uTexture}, 0));
    vec2 pixel = gl_FragCoord.xy;
    vec3 color =  texelFetch(${uTexture}, ivec2(pixel), 0).xyz;
    float m = comp.z +
              dot(comp.xy * sin(pixel / dim * sine_coord), vec2(1.0, 1.0));
    ${oFragColor} = vec4(color * m, 1.0);
}
"""
  ]);