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