From 8c044468938de72f0cd9189e85d0e59f82c0ddbb Mon Sep 17 00:00:00 2001 From: AtomicWalrus Date: Mon, 20 Feb 2023 18:48:02 -0700 Subject: [PATCH] Fix height blending detail color doubling when no normal --- Engine/source/terrain/glsl/terrFeatureGLSL.cpp | 11 ++++++----- Engine/source/terrain/hlsl/terrFeatureHLSL.cpp | 11 ++++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp index 2412342a8..e901f5b79 100644 --- a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp +++ b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp @@ -587,11 +587,12 @@ void TerrainDetailMapFeatGLSL::processPix( Vector &component meta->addStatement(new GenOp(" @ = lerp( @, tGetMatrix3Row(@, 2), @ ) );\r\n", gbNormal, gbNormal, viewToTangent, detailBlend)); } - ShaderFeature::OutputTarget target = (fd.features[MFT_isDeferred]) ? RenderTarget1 : DefaultTarget; - - Var* outColor = (Var*)LangElement::find(getOutputTargetVarName(target)); - - meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + if (!fd.features.hasFeature(MFT_TerrainHeightBlend)) // this is only for lerp blending + { + ShaderFeature::OutputTarget target = (fd.features[MFT_isDeferred]) ? RenderTarget1 : DefaultTarget; + Var* outColor = (Var*)LangElement::find(getOutputTargetVarName(target)); + meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + } } output = meta; diff --git a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp index 4b82ccabf..07271bc99 100644 --- a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp +++ b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp @@ -649,11 +649,12 @@ void TerrainDetailMapFeatHLSL::processPix( Vector &component meta->addStatement(new GenOp(" @ = lerp( @, @[2], @ );\r\n", gbNormal, gbNormal, viewToTangent, detailBlend)); } - ShaderFeature::OutputTarget target = (fd.features[MFT_isDeferred]) ? RenderTarget1 : DefaultTarget; - - Var* outColor = (Var*)LangElement::find(getOutputTargetVarName(target)); - - meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + if (!fd.features.hasFeature(MFT_TerrainHeightBlend)) + { + ShaderFeature::OutputTarget target = (fd.features[MFT_isDeferred]) ? RenderTarget1 : DefaultTarget; + Var* outColor = (Var*)LangElement::find(getOutputTargetVarName(target)); + meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + } } output = meta;