TSL Refraction Operator:
sin(θ₂) = (n₁ / n₂) * sin(θ₁)
Live WGSL/TSL Shader Function
// Three.js Shader Language (TSL) Node Logic
const uRefractIndex = uniform(1.45);
const uDispersion = uniform(0.080);
vec2 refractOffset = normal.xy * (1.0 - 1.0 / uRefractIndex);
vec2 distortedUV = screenUV + refractOffset * distortionNoise;
vec4 rCol = texture2D(uScene, distortedUV + vec2(uDispersion, 0.0));
vec4 gCol = texture2D(uScene, distortedUV);
vec4 bCol = texture2D(uScene, distortedUV - vec2(uDispersion, 0.0));