diff --git a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp index 2f5b0a4f2..f40776b80 100644 --- a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp +++ b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp @@ -1067,8 +1067,12 @@ void TerrainAdditiveFeatGLSL::processPix( Vector &componentLis const MaterialFeatureData &fd ) { Var *color = NULL; + Var *normal = NULL; if (fd.features[MFT_DeferredTerrainDetailMap]) + { color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::RenderTarget1) ); + normal = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) ); + } else color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) ); @@ -1080,6 +1084,8 @@ void TerrainAdditiveFeatGLSL::processPix( Vector &componentLis meta->addStatement( new GenOp( " clip( @ - 0.0001 );\r\n", blendTotal ) ); meta->addStatement( new GenOp( " @.a = @;\r\n", color, blendTotal ) ); + if (normal) + meta->addStatement(new GenOp(" @.a = @;\r\n", normal, blendTotal)); output = meta; } diff --git a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp index 01ca4b74f..9bd77b664 100644 --- a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp +++ b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp @@ -1165,8 +1165,12 @@ void TerrainAdditiveFeatHLSL::processPix( Vector &componentLis const MaterialFeatureData &fd ) { Var *color = NULL; + Var *normal = NULL; if (fd.features[MFT_DeferredTerrainDetailMap]) + { color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::RenderTarget1) ); + normal = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) ); + } else color = (Var*) LangElement::find( getOutputTargetVarName(ShaderFeature::DefaultTarget) ); @@ -1179,6 +1183,8 @@ void TerrainAdditiveFeatHLSL::processPix( Vector &componentLis meta->addStatement( new GenOp( " clip( @ - 0.0001 );\r\n", blendTotal ) ); meta->addStatement( new GenOp( " @.a = @;\r\n", color, blendTotal ) ); + if (normal) + meta->addStatement(new GenOp(" @.a = @;\r\n", normal, blendTotal)); output = meta; } diff --git a/Engine/source/terrain/terrCellMaterial.cpp b/Engine/source/terrain/terrCellMaterial.cpp index 3b96a1318..5fa4c1e8e 100644 --- a/Engine/source/terrain/terrCellMaterial.cpp +++ b/Engine/source/terrain/terrCellMaterial.cpp @@ -548,8 +548,8 @@ bool TerrainCellMaterial::_createPass( Vector *materials, // MFT_TerrainAdditive feature to lerp the // output normal with the previous pass. // - //if ( prePassMat ) - //desc.setColorWrites( true, true, false, false ); + if ( prePassMat ) + desc.setColorWrites( true, true, true, false ); } // We write to the zbuffer if this is a prepass