I found those lines that in the original one are not present:
//------------------------------- GEO ---------------------------------------------
float3 GEO_Haze(in float3 FogColor, in float fFogDensity, out float kFactor)
{
float MaxPow;
#if defined(SHD_HDR)
MaxPow = 1.0f + saturate(cb_mLights[sUN_LIGHT].mDiffuse.g - 0.2f) * 1.4f * 2.0f;
#else
MaxPow = 1.0f + saturate(cb_mLights[sUN_LIGHT].mDiffuse.g - 0.2f) * 1.4f;
#endif
kFactor = clamp(1.0f + (fFogDensity - 0.00000000180f)/(0.0000000000f - 0.00000000180f) * (MaxPow - 1.0f), 1.0f, MaxPow);
return pow(saturate(FogColor), kFactor);
}
float3 GEO_FogPS(const float3 cColor,
const float fDistance,
const float fFogDensitySquared,
const float3 cFog)
{
#if defined(SHD_ADDITIVE) || defined(SHD_MULTIPLICATIVE)
return lerp(float3( 0, 0, 0 ), cColor, saturate(exp(-fDistance*fDistance*fFogDensitySquared)));
#else
return lerp(cFog, cColor, saturate(exp(-fDistance*fDistance*fFogDensitySquared)));
#endif
}
float3 GEO_FogPSSquaredDist(const float3 cColor,
const float fDistanceSquared,
const float fFogDensitySquared,
const float3 cFog)
{
return lerp(cFog, cColor, saturate(exp(-fDistanceSquared*fFogDensitySquared)));
}
float4 GEO_VolumetricFogPS(const float fPositionY,
const float4 cColor,
const float fDistance,
const float fFogDensity,
const float3 cFog)
{
const float distQuared = fDistance*fDistance;
const float signOfY = ceil(saturate(fPositionY)) - ceil(saturate(-fPositionY));
const float oneOverY = 1/fPositionY;
float kFactor = 1.0f;
float4 FinalColor = cColor;
float horizonFogDensity = fFogDensity;
//Don't fade or override layers by default.
float3 layerEnableFade = float3(1, 1, 1);
//If no horizon fog we also want turn off fog layers as we get over the layer.
#if defined(SHD_NO_HORIZON_FOG)
horizonFogDensity = 0;
//The horizon fog layer enabling is based on the camera and layers.
layerEnableFade = float3(cb_mFog[0].cb_mFogNoHorizonLayerEnable,
cb_mFog[1].cb_mFogNoHorizonLayerEnable,
cb_mFog[2].cb_mFogNoHorizonLayerEnable);
#endif
const float layer[3] = { layerEnableFade[0] * cb_mFog[0].cb_mFogEnable,
layerEnableFade[1] * cb_mFog[1].cb_mFogEnable,
layerEnableFade[2] * cb_mFog[2].cb_mFogEnable };
const uint belowBottomLayer = ceil(saturate(-fPositionY - cb_mFog[0].cb_mFogBase));
#if defined(SHD_ADDITIVE) || defined(SHD_MULTIPLICATIVE)
float3 horizonFog = float3(0.0f, 0.0f, 0.0f);
#else
float3 horizonFog = GEO_Haze(cFog, horizonFogDensity, kFactor);
#endif
#if !defined(SHD_NO_HORIZON_FOG)
FinalColor.xyz = (FinalColor.xyz * belowBottomLayer) + (GEO_FogPSSquaredDist(FinalColor.xyz, distQuared, horizonFogDensity * kFactor, horizonFog) * !belowBottomLayer);
#endif
//Loop through the fog layers to calculate the layer colors.
[unroll]for(int i = 0; i < NUM_FOG_LAYERS; i++)
{
[branch]if(layer > 0.0f)
{
const Fog fog = cb_mFog;
const float yMinusBase = fPositionY - fog.cb_mFogBase;
const float yMinusTop = fPositionY - fog.cb_mFogTop;
const float signOfBase = ceil(saturate(fog.cb_mFogBase)) - ceil(saturate(-fog.cb_mFogBase));
const float signOfTop = ceil(saturate(fog.cb_mFogTop)) - ceil(saturate(-fog.cb_mFogTop));
const float cameraInLayer = saturate(-signOfBase*signOfTop);
const float pixelInLayer = saturate(-1 + ceil(saturate(yMinusBase)) + ceil(saturate(-yMinusTop)));
float ratio = abs(saturate(oneOverY * saturate(signOfY * signOfBase) * yMinusBase) -
saturate(oneOverY * saturate(signOfY * signOfTop) * yMinusTop));
ratio = saturate(ratio + saturate(cameraInLayer + pixelInLayer - 1));
ratio = lerp(ratio, 1 - ratio, cameraInLayer * (1 - pixelInLayer));
#if defined(SHD_ADDITIVE) || defined(SHD_MULTIPLICATIVE)
float3 fogColor = float3(0.0f, 0.0f, 0.0f);
#else
float3 fogColor = GEO_Haze(fog.cb_mFogColor.xyz, fog.cb_mFogDensity, kFactor);
//float3 fogColor = colors;
#endif
FinalColor.xyz = GEO_FogPS(FinalColor.xyz, ratio * fDistance, fog.cb_mFogDensity, fogColor);
#if !defined(SHD_ADDITIVE) && !defined(SHD_MULTIPLICATIVE)
horizonFog = lerp(horizonFog, GEO_Haze(fog.cb_mFogColor.xyz, fog.cb_mFogDensity, kFactor), cameraInLayer);
#endif
}
}
#if !defined(SHD_NO_HORIZON_FOG)
FinalColor.xyz = (FinalColor.xyz * !belowBottomLayer) + (GEO_FogPSSquaredDist(FinalColor.xyz, distQuared, horizonFogDensity * kFactor, horizonFog) * belowBottomLayer);
#endif
FinalColor.xyz = GEO_FogPSSquaredDist(FinalColor.xyz, distQuared, horizonFogDensity, cFog);
return FinalColor;
}
//------------------------------- ---------------------------------------------GEO