Bläddra i källkod

Clear coat Fix Webgl 1

sebavan 6 år sedan
förälder
incheckning
87dde57ffb

+ 2 - 0
src/Shaders/ShadersInclude/pbrFunctions.fx

@@ -56,6 +56,7 @@ vec2 getAARoughnessFactors(vec3 normalVector) {
 //     return getR0fromIOR(iorBase, clearCoatIor);
 // }
 
+#ifdef CLEARCOAT
 // Knowing ior clear coat is fix for the material
 // Solving iorbase = 1 + sqrt(fo) / (1 - sqrt(fo)) and f0base = square((iorbase - iorclearcoat) / (iorbase - iorclearcoat))
 // provide f0base = square(A + B * sqrt(fo)) / (B + A * sqrt(fo))
@@ -74,6 +75,7 @@ vec3 getR0RemappedForClearCoat(vec3 f0) {
         return t * t;
     #endif
 }
+#endif
 
 // From Microfacet Models for Refraction through Rough Surfaces, Walter et al. 2007
 // Keep for references

+ 2 - 0
src/Shaders/ShadersInclude/pbrLightingFunctions.fx

@@ -43,6 +43,7 @@ vec3 computeAnisotropicSpecularLighting(preLightingInfo info, vec3 V, vec3 N, ve
     return specTerm * info.attenuation * info.NdotL * lightColor;
 }
 
+#ifdef CLEARCOAT
 vec4 computeClearCoatLighting(preLightingInfo info, vec3 Ncc, float geometricRoughnessFactor, float clearCoatIntensity, vec3 lightColor) {
     float NccdotL = clamp(dot(Ncc, info.L), 0.00000000001, 1.0);
     float NccdotH = clamp(dot(Ncc, info.H), 0.000000000001, 1.0);
@@ -62,6 +63,7 @@ vec3 computeClearCoatLightingAbsorption(float NdotVRefract, vec3 L, vec3 Ncc, ve
     vec3 absorption = computeClearCoatAbsorption(NdotVRefract, NdotLRefract, clearCoatColor, clearCoatThickness, clearCoatIntensity);
     return absorption;
 }
+#endif
 
 vec3 computeProjectionTextureDiffuseLighting(sampler2D projectionLightSampler, mat4 textureProjectionMatrix){
 	vec4 strq = textureProjectionMatrix * vec4(vPositionW, 1.0);

+ 0 - 5
src/Shaders/pbr.fragment.fx

@@ -695,11 +695,6 @@ void main(void) {
         float clearCoatIntensity = vClearCoatParams.x;
         float clearCoatRoughness = vClearCoatParams.y;
 
-        // float clearCoatF0 = vClearCoatRefractionParams.x;
-        // float clearCoatEta = vClearCoatRefractionParams.y;
-        // float clearCoatRemappingFactorA = vClearCoatRefractionParams.z;
-        // float clearCoatRemappingFactorB = vClearCoatRefractionParams.w;
-
         #ifdef CLEARCOAT_TEXTURE
             vec2 clearCoatMapData = texture2D(clearCoatSampler, vClearCoatUV + uvOffset).rg * vClearCoatInfos.y;
             clearCoatIntensity *= clearCoatMapData.x;