Spaces:
Running
Running
/** | |
* @author felixturner / http://airtight.cc/ | |
* | |
* RGB Shift Shader | |
* Shifts red and blue channels from center in opposite directions | |
* Ported from http://kriss.cx/tom/2009/05/rgb-shift/ | |
* by Tom Butterworth / http://kriss.cx/tom/ | |
* | |
* amount: shift distance (1 is width of input) | |
* angle: shift angle in radians | |
*/ | |
THREE.RGBShiftShader = { | |
uniforms: { | |
"tDiffuse": { value: null }, | |
"amount": { value: 0.005 }, | |
"angle": { value: 0.0 } | |
}, | |
vertexShader: [ | |
"varying vec2 vUv;", | |
"void main() {", | |
"vUv = uv;", | |
"gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", | |
"}" | |
].join( "\n" ), | |
fragmentShader: [ | |
"uniform sampler2D tDiffuse;", | |
"uniform float amount;", | |
"uniform float angle;", | |
"varying vec2 vUv;", | |
"void main() {", | |
"vec2 offset = amount * vec2( cos(angle), sin(angle));", | |
"vec4 cr = texture2D(tDiffuse, vUv + offset);", | |
"vec4 cga = texture2D(tDiffuse, vUv);", | |
"vec4 cb = texture2D(tDiffuse, vUv - offset);", | |
"gl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);", | |
"}" | |
].join( "\n" ) | |
}; | |