public override bool PreAddToRenderState( TargetRenderState targetRenderState, Pass srcPass, Pass dstPass )
{
FogMode fMode;
ColorEx newFogColor;
Real newFogStart, newFogEnd, newFogDensity;
if ( srcPass.FogOverride )
{
fMode = srcPass.FogMode;
newFogColor = srcPass.FogColor;
newFogStart = srcPass.FogStart;
newFogEnd = srcPass.FogEnd;
newFogDensity = srcPass.FogDensity;
}
else
{
var sceneMgr = ShaderGenerator.Instance.ActiveSceneManager;
if ( sceneMgr == null )
{
fMode = FogMode.None;
newFogColor = ColorEx.White;
newFogStart = 0.0f;
newFogEnd = 0.0f;
newFogDensity = 0.0f;
}
else
{
fMode = sceneMgr.FogMode;
newFogColor = sceneMgr.FogColor;
newFogStart = sceneMgr.FogStart;
newFogEnd = sceneMgr.FogEnd;
newFogDensity = sceneMgr.FogDensity;
}
this.passOverrideParams = false;
}
//Set fog properties
SetFogProperties( fMode, newFogColor, newFogStart, newFogEnd, newFogDensity );
//Override scene fog since it will happen in shader
dstPass.SetFog( true, FogMode.None, newFogColor, newFogDensity, newFogStart, newFogEnd );
return true;
}