diff --git a/examples/js/ShaderGodRays.js b/examples/js/ShaderGodRays.js index a7f5b2e802bbd7ee06555a3b6ad63d3d46351de4..487f0911e581bf6ef6d4f25d12b48b28b35b26c4 100644 --- a/examples/js/ShaderGodRays.js +++ b/examples/js/ShaderGodRays.js @@ -102,6 +102,10 @@ THREE.ShaderGodRays = { "vec2 uv = vUv.xy;", "float col = 0.0;", + // This breaks ANGLE in Chrome 22 + // - see http://code.google.com/p/chromium/issues/detail?id=153105 + + /* // Unrolling didnt do much on my hardware (ATI Mobility Radeon 3450), // so i've just left the loop @@ -119,6 +123,27 @@ THREE.ShaderGodRays = { "uv += stepv;", "}", + */ + + // Unrolling loop manually makes it work in ANGLE + + "if ( 0.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r;", + "uv += stepv;", + + "if ( 1.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r;", + "uv += stepv;", + + "if ( 2.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r;", + "uv += stepv;", + + "if ( 3.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r;", + "uv += stepv;", + + "if ( 4.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r;", + "uv += stepv;", + + "if ( 5.0 <= iters && uv.y < 1.0 ) col += texture2D( tInput, uv ).r;", + "uv += stepv;", // Should technically be dividing by 'iters', but 'TAPS_PER_PASS' smooths out // objectionable artifacts, in particular near the sun position. The side