| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | /** * Depth-of-field shader using mipmaps * - from Matt Handley @applmak * - requires power-of-2 sized render target with enabled mipmaps */const DOFMipMapShader = {	uniforms: {		'tColor': { value: null },		'tDepth': { value: null },		'focus': { value: 1.0 },		'maxblur': { value: 1.0 }	},	vertexShader: /* glsl */`		varying vec2 vUv;		void main() {			vUv = uv;			gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );		}`,	fragmentShader: /* glsl */`		uniform float focus;		uniform float maxblur;		uniform sampler2D tColor;		uniform sampler2D tDepth;		varying vec2 vUv;		void main() {			vec4 depth = texture2D( tDepth, vUv );			float factor = depth.x - focus;			vec4 col = texture2D( tColor, vUv, 2.0 * maxblur * abs( focus - depth.x ) );			gl_FragColor = col;			gl_FragColor.a = 1.0;		}`};export { DOFMipMapShader };
 |