Spaces:
Running
Running
export default /* glsl */` | |
#ifdef USE_ENVMAP | |
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) | |
vec3 cameraToVertex = normalize( vWorldPosition - cameraPosition ); | |
// Transforming Normal Vectors with the Inverse Transformation | |
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); | |
#ifdef ENVMAP_MODE_REFLECTION | |
vec3 reflectVec = reflect( cameraToVertex, worldNormal ); | |
#else | |
vec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio ); | |
#endif | |
#else | |
vec3 reflectVec = vReflect; | |
#endif | |
#ifdef ENVMAP_TYPE_CUBE | |
vec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) ); | |
#elif defined( ENVMAP_TYPE_EQUIREC ) | |
vec2 sampleUV; | |
reflectVec = normalize( reflectVec ); | |
sampleUV.y = asin( clamp( reflectVec.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5; | |
sampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5; | |
vec4 envColor = texture2D( envMap, sampleUV ); | |
#elif defined( ENVMAP_TYPE_SPHERE ) | |
reflectVec = normalize( reflectVec ); | |
vec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) ); | |
vec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 ); | |
#else | |
vec4 envColor = vec4( 0.0 ); | |
#endif | |
envColor = envMapTexelToLinear( envColor ); | |
#ifdef ENVMAP_BLENDING_MULTIPLY | |
outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity ); | |
#elif defined( ENVMAP_BLENDING_MIX ) | |
outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity ); | |
#elif defined( ENVMAP_BLENDING_ADD ) | |
outgoingLight += envColor.xyz * specularStrength * reflectivity; | |
#endif | |
#endif | |
`; | |