dotFragmentShader top-level property

ShaderObject dotFragmentShader
final

Implementation

final ShaderObject dotFragmentShader = ShaderObject("DotF")
  ..AddUniformVars([uCenter2, uScale, uAngle, uTexture])
  ..SetBody([
    """
// Inspired by three.js

float pattern(vec2 tex) {
		float s = sin( ${uAngle} );
		float c = cos( ${uAngle} );
		vec2 point = vec2( c * tex.x - s * tex.y, s * tex.x + c * tex.y ) * ${uScale};
		return ( sin( point.x ) * sin( point.y ) ) * 4.0;
}

void main() {
    vec2 center = gl_FragCoord.xy;
		vec2 texdim = vec2(textureSize(${uTexture}, 0));
		vec4 color = texelFetch(${uTexture}, ivec2(center), 0);
		float average = ( color.r + color.g + color.b ) / 3.0;
    vec2 tex = center - ${uCenter2};
		${oFragColor} = vec4( vec3( average * 10.0 - 5.0 + pattern(tex) ), color.a );
}
"""
  ]);