Prechádzať zdrojové kódy

Merge pull request #1393 from Azaezel/alpha41/mangledMetal

correct high metallic objects lacking color input
Brian Roberts 7 mesiacov pred
rodič
commit
e7dfcc1fe3

+ 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 * surface.ao * M_1OVER_PI_F;
+   vec3 Fd = surface.albedo.rgb * M_1OVER_PI_F;
     
    //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;
+      return Fd + Fr + surface.f0 * surface.ao;
 }
 
 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 * surface.ao * M_1OVER_PI_F;
+   float3 Fd = surface.albedo.rgb * M_1OVER_PI_F;
     
    //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;
+      return Fd + Fr + surface.f0 * surface.ao;
 }
 
 float3 getDirectionalLight(Surface surface, SurfaceToLight surfaceToLight, float3 lightColor, float lightIntensity, float shadow)