From 774fa4ae04804f8ed9049bf06dcf53f333b92eaf Mon Sep 17 00:00:00 2001 From: alteredq Date: Wed, 10 Oct 2012 23:40:35 +0200 Subject: [PATCH] Added workaround for ANGLE bug in godrays example. It seems ANGLE fix may not make it through to stable Chrome for a while: http://code.google.com/p/chromium/issues/detail?id=153105 Should revisit this when stable Chrome 23 comes out. --- examples/js/ShaderGodRays.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/examples/js/ShaderGodRays.js b/examples/js/ShaderGodRays.js index a7f5b2e802..487f0911e5 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 -- GitLab