Quote:
Originally Posted by W_clear
// 6. horizont haze
float hazeMask = smoothstep(1, 0, saturate(In.eyeDir.w * g_skyHazeHeight.x - g_skyHazeHeight.y)*2);
color = lerp(color, g_skyHazeColor, hazeMask);
THANKS! 
|
It's linear interpolation. Without seeing the specifics of their implemenation, and i can only guess.
the first function call is for finding out how much the color will change, and the second call is doing the actual color interpolation.
1. smoothstep:
The first two arguements define the Max/Min of the step ( 1 & 0 would mean between full color and no color) and the last part acts as a "weight" for the "step".
2. Lerp:
Is the actual interpolation. It's changing "color" towards "g_skyHazeColor" by "hazeMask" amount... and then returning it back into the "color" variable.
So if you need to change how the interpolation is done between the sky and the fog... you'd probably want to alter the way "hazemask" gets computed. And that would be done by adjusting the weight (3rd portion) of the smoothstep function call. Probalby leave the saturation part alone and adjust the multiplier to the right of it some.
Or
If you want less overall haze color, you could probably turn it down by change the 1 in smoothstep to like 0.8 or 0.5 or something. Just fiddle with it.