From 0b9aede7a2deeb3333e1cbfd0f68adaabee745cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20J=C3=B8rgensen?= Date: Thu, 20 Jul 2017 11:32:17 +0200 Subject: [PATCH] Fix for terrain detail color blending post-linearization --- Engine/source/terrain/glsl/terrFeatureGLSL.cpp | 11 ++++++++++- Engine/source/terrain/hlsl/terrFeatureHLSL.cpp | 8 ++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp index 6f9edbe6d..f1d411ab0 100644 --- a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp +++ b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp @@ -615,9 +615,14 @@ void TerrainDetailMapFeatGLSL::processPix( Vector &component meta->addStatement( new GenOp( " @ *= @.y * @.w;\r\n", detailColor, detailInfo, inDet ) ); - meta->addStatement( new GenOp( " @ += @ * @;\r\n", + + meta->addStatement(new GenOp(" @.rgb = toGamma(@.rgb);\r\n", outColor, outColor)); + + meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + meta->addStatement(new GenOp(" @.rgb = toLinear(clamp(@.rgb, 0, 1));\r\n", outColor, outColor)); + meta->addStatement( new GenOp( " }\r\n" ) ); output = meta; @@ -867,9 +872,13 @@ void TerrainMacroMapFeatGLSL::processPix( Vector &componentL Var *outColor = (Var*)LangElement::find( getOutputTargetVarName(target) ); + meta->addStatement(new GenOp(" @.rgb = toGamma(@.rgb);\r\n", outColor, outColor)); + meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + meta->addStatement(new GenOp(" @.rgb = toLinear(clamp(@.rgb, 0, 1));\r\n", outColor, outColor)); + meta->addStatement( new GenOp( " }\r\n" ) ); output = meta; diff --git a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp index 094613785..26d5b793c 100644 --- a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp +++ b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp @@ -582,9 +582,13 @@ void TerrainDetailMapFeatHLSL::processPix( Vector &component Var *outColor = (Var*)LangElement::find( getOutputTargetVarName(target) ); + meta->addStatement(new GenOp(" @.rgb = toGamma(@.rgb);\r\n", outColor, outColor)); + meta->addStatement( new GenOp( " @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + meta->addStatement(new GenOp(" @.rgb = toLinear(clamp(@.rgb, 0, 1));\r\n", outColor, outColor)); + meta->addStatement( new GenOp( " }\r\n" ) ); output = meta; @@ -848,9 +852,13 @@ void TerrainMacroMapFeatHLSL::processPix( Vector &componentL Var *outColor = (Var*)LangElement::find( getOutputTargetVarName(target) ); + meta->addStatement(new GenOp(" @.rgb = toGamma(@.rgb);\r\n", outColor, outColor)); + meta->addStatement(new GenOp(" @ += @ * @;\r\n", outColor, detailColor, detailBlend)); + meta->addStatement(new GenOp(" @.rgb = toLinear(clamp(@.rgb, 0, 1));\r\n", outColor, outColor)); + meta->addStatement( new GenOp( " }\r\n" ) ); output = meta;