Fix fog rendering bug on d3d11/d3d10
This commit is contained in:
@@ -152,7 +152,13 @@ void PS_Forward(
|
|||||||
|
|
||||||
#if USE_FOG && MATERIAL_SHADING_MODEL != SHADING_MODEL_UNLIT
|
#if USE_FOG && MATERIAL_SHADING_MODEL != SHADING_MODEL_UNLIT
|
||||||
// Calculate exponential height fog
|
// Calculate exponential height fog
|
||||||
float4 fog = GetExponentialHeightFog(ExponentialHeightFog, materialInput.WorldPosition, ViewPos, 0, gBuffer.ViewPos.z);
|
#if DIRECTX && FEATURE_LEVEL < FEATURE_LEVEL_SM6
|
||||||
|
// TODO: fix D3D11/D3D10 bug with incorrect distance
|
||||||
|
float fogSceneDistance = distance(materialInput.WorldPosition, ViewPos);
|
||||||
|
#else
|
||||||
|
float fogSceneDistance = gBuffer.ViewPos.z;
|
||||||
|
#endif
|
||||||
|
float4 fog = GetExponentialHeightFog(ExponentialHeightFog, materialInput.WorldPosition, ViewPos, 0, fogSceneDistance);
|
||||||
|
|
||||||
if (ExponentialHeightFog.VolumetricFogMaxDistance > 0)
|
if (ExponentialHeightFog.VolumetricFogMaxDistance > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ void ForwardShadingFeature::Bind(MaterialShader::BindParameters& params, Span<by
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
data.ExponentialHeightFog.FogMinOpacity = 1.0f;
|
data.ExponentialHeightFog.FogMinOpacity = 1.0f;
|
||||||
|
data.ExponentialHeightFog.FogDensity = 0.0f;
|
||||||
|
data.ExponentialHeightFog.FogCutoffDistance = 0.1f;
|
||||||
|
data.ExponentialHeightFog.StartDistance = 0.0f;
|
||||||
data.ExponentialHeightFog.ApplyDirectionalInscattering = 0.0f;
|
data.ExponentialHeightFog.ApplyDirectionalInscattering = 0.0f;
|
||||||
}
|
}
|
||||||
params.GPUContext->BindSR(volumetricFogTextureRegisterIndex, volumetricFogTexture);
|
params.GPUContext->BindSR(volumetricFogTextureRegisterIndex, volumetricFogTexture);
|
||||||
|
|||||||
Reference in New Issue
Block a user