|
@@ -97,13 +97,7 @@ uniform sampler2D specularSampler;
|
|
|
#endif
|
|
|
|
|
|
// Fresnel
|
|
|
-#ifdef FRESNEL
|
|
|
-float computeFresnelTerm(vec3 viewDirection, vec3 worldNormal, float bias, float power)
|
|
|
-{
|
|
|
- float fresnelTerm = pow(bias + abs(dot(viewDirection, worldNormal)), power);
|
|
|
- return clamp(fresnelTerm, 0., 1.);
|
|
|
-}
|
|
|
-#endif
|
|
|
+#include<fresnelFunction>
|
|
|
|
|
|
#ifdef DIFFUSEFRESNEL
|
|
|
uniform vec4 diffuseLeftColor;
|
|
@@ -141,67 +135,7 @@ uniform mat4 reflectionMatrix;
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
-vec3 computeReflectionCoords(vec4 worldPos, vec3 worldNormal)
|
|
|
-{
|
|
|
-#ifdef REFLECTIONMAP_EQUIRECTANGULAR_FIXED
|
|
|
- vec3 direction = normalize(vDirectionW);
|
|
|
-
|
|
|
- float t = clamp(direction.y * -0.5 + 0.5, 0., 1.0);
|
|
|
- float s = atan(direction.z, direction.x) * RECIPROCAL_PI2 + 0.5;
|
|
|
-
|
|
|
- return vec3(s, t, 0);
|
|
|
-#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
|
|
|
- vec3 viewDir = normalize(vec3(view * worldPos));
|
|
|
- vec3 viewNormal = normalize(vec3(view * vec4(worldNormal, 0.0)));
|
|
|
-
|
|
|
- vec3 r = reflect(viewDir, viewNormal);
|
|
|
- r.z = r.z - 1.0;
|
|
|
-
|
|
|
- float m = 2.0 * length(r);
|
|
|
-
|
|
|
- return vec3(r.x / m + 0.5, 1.0 - r.y / m - 0.5, 0);
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef REFLECTIONMAP_PLANAR
|
|
|
- vec3 viewDir = worldPos.xyz - vEyePosition;
|
|
|
- vec3 coords = normalize(reflect(viewDir, worldNormal));
|
|
|
-
|
|
|
- return vec3(reflectionMatrix * vec4(coords, 1));
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef REFLECTIONMAP_CUBIC
|
|
|
- vec3 viewDir = worldPos.xyz - vEyePosition;
|
|
|
- vec3 coords = reflect(viewDir, worldNormal);
|
|
|
-#ifdef INVERTCUBICMAP
|
|
|
- coords.y = 1.0 - coords.y;
|
|
|
-#endif
|
|
|
- return vec3(reflectionMatrix * vec4(coords, 0));
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef REFLECTIONMAP_PROJECTION
|
|
|
- return vec3(reflectionMatrix * (view * worldPos));
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef REFLECTIONMAP_SKYBOX
|
|
|
- return vPositionUVW;
|
|
|
-#endif
|
|
|
-
|
|
|
-#ifdef REFLECTIONMAP_EXPLICIT
|
|
|
- return vec3(0, 0, 0);
|
|
|
-#endif
|
|
|
-}
|
|
|
+#include<reflectionFunction>
|
|
|
|
|
|
#ifdef REFLECTIONFRESNEL
|
|
|
uniform vec4 reflectionLeftColor;
|