diff --git a/src/renderers/shaders/ShaderLib.js b/src/renderers/shaders/ShaderLib.js index cc55d1b97792b627581382156b47579c78a46f27..e4266e34673a3d1695fb15d561dd553ea7683ec5 100644 --- a/src/renderers/shaders/ShaderLib.js +++ b/src/renderers/shaders/ShaderLib.js @@ -172,15 +172,10 @@ var ShaderLib = { }, - /* ------------------------------------------------------------------------- - // Cube map shader - ------------------------------------------------------------------------- */ - equirect: { uniforms: { tEquirect: { value: null }, - tFlip: { value: - 1 } }, vertexShader: ShaderChunk.equirect_vert, diff --git a/src/renderers/shaders/ShaderLib/equirect_frag.glsl b/src/renderers/shaders/ShaderLib/equirect_frag.glsl index 81648499b1e6fcba97d4f9fcc7abc8d166224ac7..e33b09e71ee51105473e1dc5bd0159566205195e 100644 --- a/src/renderers/shaders/ShaderLib/equirect_frag.glsl +++ b/src/renderers/shaders/ShaderLib/equirect_frag.glsl @@ -1,5 +1,4 @@ uniform sampler2D tEquirect; -uniform float tFlip; varying vec3 vWorldPosition; @@ -7,11 +6,14 @@ varying vec3 vWorldPosition; void main() { - // gl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) ); vec3 direction = normalize( vWorldPosition ); + vec2 sampleUV; - sampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 ); + + sampleUV.y = asin( clamp( direction.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; + sampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5; + gl_FragColor = texture2D( tEquirect, sampleUV ); }