|
@@ -465,7 +465,7 @@ uniform sampler2D reflection2DSampler;
|
|
#ifdef REFLECTIONMAP_SKYBOX
|
|
#ifdef REFLECTIONMAP_SKYBOX
|
|
varying vec3 vPositionUVW;
|
|
varying vec3 vPositionUVW;
|
|
#else
|
|
#else
|
|
- #ifdef REFLECTIONMAP_EQUIRECTANGULAR
|
|
|
|
|
|
+ #ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
|
|
varying vec3 vDirectionW;
|
|
varying vec3 vDirectionW;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
@@ -476,7 +476,7 @@ varying vec3 vPositionUVW;
|
|
|
|
|
|
vec3 computeReflectionCoords(vec4 worldPos, vec3 worldNormal)
|
|
vec3 computeReflectionCoords(vec4 worldPos, vec3 worldNormal)
|
|
{
|
|
{
|
|
-#ifdef REFLECTIONMAP_EQUIRECTANGULAR
|
|
|
|
|
|
+#ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
|
|
vec3 direction = normalize(vDirectionW);
|
|
vec3 direction = normalize(vDirectionW);
|
|
|
|
|
|
float t = clamp(direction.y * -0.5 + 0.5, 0., 1.0);
|
|
float t = clamp(direction.y * -0.5 + 0.5, 0., 1.0);
|
|
@@ -485,6 +485,16 @@ vec3 computeReflectionCoords(vec4 worldPos, vec3 worldNormal)
|
|
return vec3(s, t, 0);
|
|
return vec3(s, t, 0);
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+#ifdef REFLECTIONMAP_EQUIRECTANGULAR
|
|
|
|
+
|
|
|
|
+ vec3 cameraToVertex = normalize(worldPos.xyz - vEyePosition);
|
|
|
|
+ vec3 r = reflect(cameraToVertex, worldNormal);
|
|
|
|
+ float t = clamp(r.y * -0.5 + 0.5, 0., 1.0);
|
|
|
|
+ float s = atan(r.z, r.x) * RECIPROCAL_PI2 + 0.5;
|
|
|
|
+
|
|
|
|
+ return vec3(s, t, 0);
|
|
|
|
+#endif
|
|
|
|
+
|
|
#ifdef REFLECTIONMAP_SPHERICAL
|
|
#ifdef REFLECTIONMAP_SPHERICAL
|
|
vec3 viewDir = normalize(vec3(view * worldPos));
|
|
vec3 viewDir = normalize(vec3(view * worldPos));
|
|
vec3 viewNormal = normalize(vec3(view * vec4(worldNormal, 0.0)));
|
|
vec3 viewNormal = normalize(vec3(view * vec4(worldNormal, 0.0)));
|
|
@@ -1263,8 +1273,10 @@ vec3 environmentIrradiance = vReflectionColor.rgb;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef USESPHERICALFROMREFLECTIONMAP
|
|
#ifdef USESPHERICALFROMREFLECTIONMAP
|
|
- vec3 normalEnvironmentSpace = (reflectionMatrix * vec4(normalW, 1)).xyz;
|
|
|
|
- environmentIrradiance = EnvironmentIrradiance(normalEnvironmentSpace);
|
|
|
|
|
|
+ #ifndef REFLECTIONMAP_SKYBOX
|
|
|
|
+ vec3 normalEnvironmentSpace = (reflectionMatrix * vec4(normalW, 1)).xyz;
|
|
|
|
+ environmentIrradiance = EnvironmentIrradiance(normalEnvironmentSpace);
|
|
|
|
+ #endif
|
|
#else
|
|
#else
|
|
environmentRadiance = toLinearSpace(environmentRadiance.rgb);
|
|
environmentRadiance = toLinearSpace(environmentRadiance.rgb);
|
|
|
|
|