diff --git a/com.unity.render-pipelines.high-definition/CHANGELOG.md b/com.unity.render-pipelines.high-definition/CHANGELOG.md index fa92cbe1928..1317c0b21dc 100644 --- a/com.unity.render-pipelines.high-definition/CHANGELOG.md +++ b/com.unity.render-pipelines.high-definition/CHANGELOG.md @@ -573,6 +573,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed SceneView Draw Modes not being properly updated after opening new scene view panels or changing the editor layout. - VFX: Removed irrelevant queues in render queue selection from HDRP outputs - VFX: Motion Vector are correctly renderered with MSAA [Case 1240754](https://issuetracker.unity3d.com/product/unity/issues/guid/1240754/) +- Fixed a cause of NaN when a normal of 0-length is generated (usually via shadergraph). ### Changed - Improve MIP selection for decals on Transparents diff --git a/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl b/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl index 6f51ff97467..70846c45962 100644 --- a/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl +++ b/com.unity.render-pipelines.high-definition/Runtime/Material/MaterialUtilities.hlsl @@ -32,8 +32,8 @@ void GetNormalWS(FragInputs input, float3 normalTS, out float3 normalWS, float3 normalTS.xy *= flipSign; #endif // _DOUBLESIDED_ON - // We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalize) - normalWS = normalize(TransformTangentToWorld(normalTS, input.tangentToWorld)); + // We need to normalize as we use mikkt tangent space and this is expected (tangent space is not normalized) + normalWS = SafeNormalize(TransformTangentToWorld(normalTS, input.tangentToWorld)); #endif // SURFACE_GRADIENT } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalBlendNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalBlendNode.cs index 2dc08edb4c1..ce95710c356 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalBlendNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalBlendNode.cs @@ -58,7 +58,7 @@ static string Unity_NormalBlend( return @" { - Out = normalize($precision3(A.rg + B.rg, A.b * B.b)); + Out = SafeNormalize($precision3(A.rg + B.rg, A.b * B.b)); } "; } diff --git a/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalFromHeightNode.cs b/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalFromHeightNode.cs index 4432ea77ca0..97ba705d079 100644 --- a/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalFromHeightNode.cs +++ b/com.unity.shadergraph/Editor/Data/Nodes/Artistic/Normal/NormalFromHeightNode.cs @@ -99,7 +99,7 @@ public void GenerateNodeFunction(FunctionRegistry registry, GenerationMode gener s.AppendLine("$precision dHdx = ddx(In);"); s.AppendLine("$precision dHdy = ddy(In);"); s.AppendLine("$precision3 surfGrad = surface * (dHdx*crossY + dHdy*crossX);"); - s.AppendLine("Out = normalize(TangentMatrix[2].xyz - (Strength * surfGrad));"); + s.AppendLine("Out = SafeNormalize(TangentMatrix[2].xyz - (Strength * surfGrad));"); if(outputSpace == OutputSpace.Tangent) s.AppendLine("Out = TransformWorldToTangent(Out, TangentMatrix);");