three
Version:
JavaScript 3D library
63 lines (33 loc) • 1.24 kB
JavaScript
export default /* glsl */`
uniform float refractionRatio;
vec3 getIBLIrradiance( const in vec3 normal ) {
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );
return PI * envMapColor.rgb * envMapIntensity;
return vec3( 0.0 );
}
vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
vec3 reflectVec;
reflectVec = reflect( - viewDir, normal );
// Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
reflectVec = refract( - viewDir, normal, refractionRatio );
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
return envMapColor.rgb * envMapIntensity;
return vec3( 0.0 );
}
`;