Bladeren bron

correct misbehaving ibl
got turned around on which pass returned the surface.basecolor when ign orelighting was on.
refine dampen method o stop fighting grass

AzaezelX 7 maanden geleden
bovenliggende
commit
52dbef6f5f

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

@@ -394,7 +394,8 @@ void dampen(inout Surface surface, sampler2D WetnessTexture, float accumTime, fl
    if (degree<=0.0) return;
    vec3 n = abs(surface.N);
 
-   float grav = 2.0-pow(dot(float3(0,0,-1),surface.N),3);
+   float ang = dot(float3(0,0,-1),surface.N);
+   float grav = 2.0-pow(ang,3);
    if (grav<0) grav*=-1.0;
    
    float speed = accumTime*(1.0-surface.roughness)*grav;
@@ -405,8 +406,8 @@ void dampen(inout Surface surface, sampler2D WetnessTexture, float accumTime, fl
    wetness = lerp(wetness,texture(WetnessTexture,vec2(surface.P.zy*0.2+wetoffset)).b,n.x);
    wetness = pow(wetness,3)*degree;
    
-   surface.roughness = lerp(surface.roughness,(1.0-pow(wetness,2))*surface.roughness*0.92f+0.04f,degree);
-   surface.baseColor.rgb = lerp(surface.baseColor.rgb,surface.baseColor.rgb*(2.0-wetness)/2,degree); 
+   surface.roughness = lerp(surface.roughness,(1.0-wetness*surface.roughness)*0.92f+0.04f,ang);
+   surface.baseColor.rgb = lerp(surface.baseColor.rgb*(2.0-wetness),surface.baseColor.rgb,ang*surface.roughness);
    updateSurface(surface);
 }
 
@@ -416,6 +417,11 @@ vec4 computeForwardProbes(Surface surface,
     vec3 wsEyePos, float skylightCubemapIdx, int SkylightDamp, sampler2D BRDFTexture, sampler2D WetnessTexture, float accumTime, float dampness,
 	samplerCubeArray irradianceCubemapAR, samplerCubeArray specularCubemapAR)
 {
+   if (getFlag(surface.matFlag, 2))
+   {
+      return vec4(0,0,0,0);
+   }
+   
    int i = 0;
    float alpha = 1;
    float wetAmmout = 0;

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

@@ -396,8 +396,8 @@ void dampen(inout Surface surface, TORQUE_SAMPLER2D(WetnessTexture), float accum
 {   
    if (degree<=0.0) return;
    float3 n = abs(surface.N);
-
-   float grav = 2.0-pow(dot(float3(0,0,-1),surface.N),3);
+   float ang = dot(float3(0,0,-1),surface.N);
+   float grav = 2.0-pow(ang,3);
    if (grav<0) grav*=-1.0;
    
    float speed = accumTime*(1.0-surface.roughness)*grav;
@@ -408,8 +408,8 @@ void dampen(inout Surface surface, TORQUE_SAMPLER2D(WetnessTexture), float accum
    wetness = lerp(wetness,TORQUE_TEX2D(WetnessTexture,float2(surface.P.zy*0.2+wetoffset)).b,n.x);
    wetness = pow(wetness,3)*degree;
    
-   surface.roughness = lerp(surface.roughness,(1.0-pow(wetness,2))*surface.roughness*0.92f+0.04f,degree);
-   surface.baseColor.rgb = lerp(surface.baseColor.rgb,surface.baseColor.rgb*(2.0-wetness)/2,degree);
+   surface.roughness = lerp(surface.roughness,(1.0-wetness*surface.roughness)*0.92f+0.04f,ang);
+   surface.baseColor.rgb = lerp(surface.baseColor.rgb*(2.0-wetness),surface.baseColor.rgb,ang*surface.roughness);
    surface.Update(); 
 }
 
@@ -419,6 +419,11 @@ float4 computeForwardProbes(Surface surface,
     float3 wsEyePos, float skylightCubemapIdx, int SkylightDamp, TORQUE_SAMPLER2D(BRDFTexture), TORQUE_SAMPLER2D(WetnessTexture), float accumTime, float dampness,
 	 TORQUE_SAMPLERCUBEARRAY(irradianceCubemapAR), TORQUE_SAMPLERCUBEARRAY(specularCubemapAR))
 {
+   if (getFlag(surface.matFlag, 2))
+   {
+      return float4(0,0,0,0);
+   }
+
    int i = 0;
    float alpha = 1;
    float wetAmmout = 0;

+ 1 - 1
Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl

@@ -57,7 +57,7 @@ void main()
    Surface surface = createSurface(normDepth, colorBuffer, matInfoBuffer, IN_uv0.xy, eyePosWorld, IN_wsEyeRay, cameraToWorld);
    if (getFlag(surface.matFlag, 2))
    { 
-      OUT_col = surface.baseColor;
+      OUT_col = vec4(0,0,0,0);
       return;
    } 
    #ifdef USE_SSAO_MASK

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

@@ -53,9 +53,8 @@ float4 main(PFXVertToPix IN) : SV_TARGET
       
    if (getFlag(surface.matFlag, 2))
    {
-      return surface.baseColor;
-   } 
-   
+      return float4(0,0,0,0);
+   }
    #ifdef USE_SSAO_MASK
       float ssao =  1.0 - TORQUE_TEX2D( ssaoMask, viewportCoordToRenderTarget( IN.uv0.xy, rtParams7 ) ).r;
       surface.ao = min(surface.ao, ssao);