From 747dd3ecd401d8d03a124ad5cc9c24430f5e6834 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Wed, 15 Feb 2023 14:51:28 -0600 Subject: [PATCH] terrain safeties ensure terrain normals don't nan ensure the blend range for terrains is floored --- Engine/source/terrain/glsl/terrFeatureGLSL.cpp | 4 ++-- Engine/source/terrain/hlsl/terrFeatureHLSL.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp index 43e36d2b3..2412342a8 100644 --- a/Engine/source/terrain/glsl/terrFeatureGLSL.cpp +++ b/Engine/source/terrain/glsl/terrFeatureGLSL.cpp @@ -250,7 +250,7 @@ void TerrainBaseMapFeatGLSL::processVert( Vector &componentLis { Var* inNormal = (Var*)LangElement::find("normal"); meta->addStatement( - new GenOp(" @.z = dot( normalize( vec3( @.x, @.y, 0 ) ), vec3( 0, 1, 0 ) );\r\n", + new GenOp(" @.z = abs(dot( normalize( vec3( @.x, @.y, 0.0001 ) ), vec3( 0, 1, 0 ) ));\r\n", outTex, inNormal, inNormal)); meta->addStatement( new GenOp(" @.w = 1.0 - dot( normalize( @.xyz ), vec3( 0, 0, 1 ) );\r\n", @@ -1300,7 +1300,7 @@ void TerrainHeightMapBlendGLSL::processPix(Vector& componentLi { Var* detailBlend = (Var*)LangElement::find(String::ToString("detailBlend%d", idx)); Var* detailH = (Var*)LangElement::find(String::ToString("detailH%d", idx)); - meta->addStatement(new GenOp(" @ = (@-@.x)/(@.y-@.x);\r\n", detailH, detailH, heightRange, heightRange, heightRange)); + meta->addStatement(new GenOp(" @ = (@-@.x)/(@.y-@.x)-@.x;\r\n", detailH, detailH, heightRange, heightRange, heightRange)); } meta->addStatement(new GenOp("\r\n")); diff --git a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp index ff0457e75..4b82ccabf 100644 --- a/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp +++ b/Engine/source/terrain/hlsl/terrFeatureHLSL.cpp @@ -305,7 +305,7 @@ void TerrainBaseMapFeatHLSL::processVert(Vector& componentList { Var* inNormal = (Var*)LangElement::find("normal"); meta->addStatement( - new GenOp(" @.z = dot( normalize( float3( @.x, @.y, 0 ) ), float3( 0, 1, 0 ) );\r\n", + new GenOp(" @.z = abs(dot( normalize( float3( @.x, @.y, 0.0001 ) ), float3( 0, 1, 0 ) ));\r\n", outTex, inNormal, inNormal)); meta->addStatement( new GenOp(" @.w = 1.0 - dot( normalize( @.xyz ), float3( 0, 0, 1 ) );\r\n", @@ -1381,7 +1381,7 @@ void TerrainHeightMapBlendHLSL::processPix(Vector& componentLi { Var* detailBlend = (Var*)LangElement::find(String::ToString("detailBlend%d", idx)); Var* detailH = (Var*)LangElement::find(String::ToString("detailH%d", idx)); - meta->addStatement(new GenOp(" @ = (@-@.x)/(@.y-@.x);\r\n", detailH, detailH, heightRange, heightRange, heightRange)); + meta->addStatement(new GenOp(" @ = (@-@.x)/(@.y-@.x)-@.x;\r\n", detailH, detailH, heightRange, heightRange, heightRange, heightRange)); } meta->addStatement(new GenOp("\r\n")); }