Explorar o código

Fix height blending detail color doubling when no normal

AtomicWalrus %!s(int64=2) %!d(string=hai) anos
pai
achega
8c04446893

+ 6 - 5
Engine/source/terrain/glsl/terrFeatureGLSL.cpp

@@ -587,11 +587,12 @@ void TerrainDetailMapFeatGLSL::processPix(   Vector<ShaderComponent*> &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;

+ 6 - 5
Engine/source/terrain/hlsl/terrFeatureHLSL.cpp

@@ -649,11 +649,12 @@ void TerrainDetailMapFeatHLSL::processPix(   Vector<ShaderComponent*> &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;