VignetteShader top-level property

Map<String, dynamic> VignetteShader
getter/setter pair

Vignette shader based on PaintEffect postprocess from ro.me http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js

Implementation

Map<String, dynamic> VignetteShader = {
  "uniforms": {
    'tDiffuse': {},
    'offset': {"value": 1.0},
    'darkness': {"value": 1.0}
  },
  "vertexShader": [
    'varying vec2 vUv;',
    'void main() {',
    '	vUv = uv;',
    '	gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );',
    '}'
  ].join('\n'),
  "fragmentShader": [
    'uniform float offset;',
    'uniform float darkness;',

    'uniform sampler2D tDiffuse;',

    'varying vec2 vUv;',

    'void main() {',

    // Eskil's vignette

    '	vec4 texel = texture2D( tDiffuse, vUv );',
    '	vec2 uv = ( vUv - vec2( 0.5 ) ) * vec2( offset );',
    '	gl_FragColor = vec4( mix( texel.rgb, vec3( 1.0 - darkness ), dot( uv, uv ) ), texel.a );',

    /*
		// alternative version from glfx.js
		// this one makes more "dusty" look (as opposed to "burned")

		"	vec4 color = texture2D( tDiffuse, vUv );",
		"	float dist = distance( vUv, vec2( 0.5 ) );",
		"	color.rgb *= smoothstep( 0.8, offset * 0.799, dist *( darkness + offset ) );",
		"	gl_FragColor = color;",
		*/

    '}'
  ].join('\n')
};