scanlineFragmentShader top-level property
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);
}
"""
]);