#ifdef GL_ES precision highp float; #endif // Samplers varying vec2 vUV; uniform sampler2D textureSampler; uniform sampler2D refractionSampler; // Parameters uniform vec3 baseColor; uniform float depth; uniform float colorLevel; void main() { float ref = 1.0 - texture2D(refractionSampler, vUV).r; vec2 uv = vUV - vec2(0.5); vec2 offset = uv * depth * ref; vec3 sourceColor = texture2D(textureSampler, vUV - offset).rgb; gl_FragColor = vec4(sourceColor + sourceColor * ref * colorLevel, 1.0); }