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
This commit is contained in:
AzaezelX 2025-01-20 19:45:22 -06:00
parent b105fce2f2
commit 52dbef6f5f
4 changed files with 21 additions and 11 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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);