Fix height blending detail color doubling when no normal

This commit is contained in:
AtomicWalrus 2023-02-20 18:48:02 -07:00
parent 2d946f693a
commit 8c04446893
2 changed files with 12 additions and 10 deletions

View file

@ -587,11 +587,12 @@ void TerrainDetailMapFeatGLSL::processPix( Vector<ShaderComponent*> &component
meta->addStatement(new GenOp(" @ = lerp( @, tGetMatrix3Row(@, 2), @ ) );\r\n", gbNormal, gbNormal, viewToTangent, detailBlend)); meta->addStatement(new GenOp(" @ = lerp( @, tGetMatrix3Row(@, 2), @ ) );\r\n", gbNormal, gbNormal, viewToTangent, detailBlend));
} }
ShaderFeature::OutputTarget target = (fd.features[MFT_isDeferred]) ? RenderTarget1 : DefaultTarget; if (!fd.features.hasFeature(MFT_TerrainHeightBlend)) // this is only for lerp blending
{
Var* outColor = (Var*)LangElement::find(getOutputTargetVarName(target)); 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)); meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend));
}
} }
output = meta; output = meta;

View file

@ -649,11 +649,12 @@ void TerrainDetailMapFeatHLSL::processPix( Vector<ShaderComponent*> &component
meta->addStatement(new GenOp(" @ = lerp( @, @[2], @ );\r\n", gbNormal, gbNormal, viewToTangent, detailBlend)); meta->addStatement(new GenOp(" @ = lerp( @, @[2], @ );\r\n", gbNormal, gbNormal, viewToTangent, detailBlend));
} }
ShaderFeature::OutputTarget target = (fd.features[MFT_isDeferred]) ? RenderTarget1 : DefaultTarget; if (!fd.features.hasFeature(MFT_TerrainHeightBlend))
{
Var* outColor = (Var*)LangElement::find(getOutputTargetVarName(target)); 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)); meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend));
}
} }
output = meta; output = meta;