瀏覽代碼

Merge pull request #1404 from Azaezel/alpha41/albedoOops

proper correction for missing direct light suface coloration
Brian Roberts 7 月之前
父節點
當前提交
80b16185ef

+ 2 - 2
Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl

@@ -226,7 +226,7 @@ float getDistanceAtt( vec3 unormalizedLightVector , float invSqrAttRadius )
 vec3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight)
 {
    //diffuse term
-   vec3 Fd = surface.albedo.rgb * M_1OVER_PI_F;
+   vec3 Fd = surface.baseColor.rgb * M_1OVER_PI_F * surface.ao;
     
    //GGX specular
    vec3 F = F_Schlick(surface.f0, surface.f90, surfaceToLight.HdotV);
@@ -237,7 +237,7 @@ vec3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight)
    if(isCapturing == 1)
       return mix(Fd + Fr, surface.baseColor.rgb, surface.metalness);
    else
-      return Fd + Fr + surface.f0 * surface.ao;
+      return Fd + Fr;
 }
 
 vec3 getDirectionalLight(Surface surface, SurfaceToLight surfaceToLight, vec3 lightColor, float lightIntensity, float shadow)

+ 2 - 2
Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl

@@ -227,7 +227,7 @@ float getDistanceAtt( float3 unormalizedLightVector , float invSqrAttRadius )
 float3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight)
 {
    //diffuse term
-   float3 Fd = surface.albedo.rgb * M_1OVER_PI_F;
+   float3 Fd = surface.baseColor.rgb * M_1OVER_PI_F * surface.ao;
     
    //GGX specular
    float3 F = F_Schlick(surface.f0, surface.f90, surfaceToLight.HdotV);
@@ -238,7 +238,7 @@ float3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight)
    if(isCapturing == 1)
       return lerp(Fd + Fr,surface.baseColor.rgb,surface.metalness);
    else
-      return Fd + Fr + surface.f0 * surface.ao;
+      return Fd + Fr;
 }
 
 float3 getDirectionalLight(Surface surface, SurfaceToLight surfaceToLight, float3 lightColor, float lightIntensity, float shadow)