diff --git a/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLitVaryings.template b/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLitVaryings.template index 58a4f4de60e..ccb24a7e4d3 100644 --- a/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLitVaryings.template +++ b/com.unity.render-pipelines.high-definition/Editor/VFXGraph/Shaders/VFXLitVaryings.template @@ -67,7 +67,7 @@ o.VFX_VARYING_METALLIC = metallic; #elif HDRP_MATERIAL_TYPE_SPECULAR #ifdef VFX_VARYING_SPECULAR ${VFXLoadParameter:{specularColor}} -o.VFX_VARYING_SPECULAR = specularColor; +o.VFX_VARYING_SPECULAR = specularColor.rgb; #endif #elif HDRP_MATERIAL_TYPE_TRANSLUCENT #ifdef VFX_VARYING_THICKNESS @@ -92,7 +92,7 @@ o.VFX_VARYING_EMISSIVESCALE = emissiveScale; o.VFX_VARYING_EMISSIVE = attributes.color; #elif HDRP_USE_ADDITIONAL_EMISSIVE_COLOR ${VFXLoadParameter:{emissiveColor}} -o.VFX_VARYING_EMISSIVE = emissiveColor; +o.VFX_VARYING_EMISSIVE = emissiveColor.rgb; #endif #endif #if HDRP_USE_ADDITIONAL_BASE_COLOR diff --git a/com.unity.visualeffectgraph/CHANGELOG.md b/com.unity.visualeffectgraph/CHANGELOG.md index 045f32bef4b..874366ddc2f 100644 --- a/com.unity.visualeffectgraph/CHANGELOG.md +++ b/com.unity.visualeffectgraph/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fix [Case 1223747](https://fogbugz.unity3d.com/f/cases/1223747/) - Prevent pasting context within operator/block subgraph [Case 1235269](https://issuetracker.unity3d.com/product/unity/issues/guid/1235269/) - VFXEventBinderBase throwing a null reference exception in runtime +- Fix [Case 1290493](https://fogbugz.unity3d.com/f/cases/1290493/#BugEvent.1072735759) ## [10.2.0] - 2020-10-19 ### Added diff --git a/com.unity.visualeffectgraph/Editor/Models/Operators/Implementations/Normalize.cs b/com.unity.visualeffectgraph/Editor/Models/Operators/Implementations/Normalize.cs index 7190b77b3c1..3b54b66af03 100644 --- a/com.unity.visualeffectgraph/Editor/Models/Operators/Implementations/Normalize.cs +++ b/com.unity.visualeffectgraph/Editor/Models/Operators/Implementations/Normalize.cs @@ -1,9 +1,25 @@ using System; +using System.Collections.Generic; using UnityEngine; namespace UnityEditor.VFX.Operator { - [VFXInfo(category = "Math/Vector")] + class SafeNormalizationVariantProvider : VariantProvider + { + protected override sealed Dictionary variants + { + get + { + return new Dictionary + { + { "safeNormalize", new object[]{true, false} } + }; + } + } + } + + + [VFXInfo(category = "Math/Vector", variantProvider = typeof(SafeNormalizationVariantProvider))] class Normalize : VFXOperatorNumericUniform { public class InputProperties @@ -11,11 +27,18 @@ public class InputProperties public Vector3 x = Vector3.one; } - protected override sealed string operatorName { get { return "Normalize"; } } + [VFXSetting(VFXSettingAttribute.VisibleFlags.InInspector), SerializeField, Tooltip("Specifies if the operator should check if the vector to be normalized is a vero vector.")] + bool safeNormalize = false; + + + protected override sealed string operatorName { get {return safeNormalize ? "Safe Normalize" : "Normalize"; } } protected override sealed VFXExpression[] BuildExpression(VFXExpression[] inputExpression) { - return new[] { VFXOperatorUtility.Normalize(inputExpression[0]) }; + if(safeNormalize) + return new[] { VFXOperatorUtility.SafeNormalize(inputExpression[0]) }; + else + return new[] { VFXOperatorUtility.Normalize(inputExpression[0]) }; } protected override sealed ValidTypeRule typeFilter diff --git a/com.unity.visualeffectgraph/Editor/Models/Operators/VFXOperatorUtility.cs b/com.unity.visualeffectgraph/Editor/Models/Operators/VFXOperatorUtility.cs index 72342c70237..cb4f808eb48 100644 --- a/com.unity.visualeffectgraph/Editor/Models/Operators/VFXOperatorUtility.cs +++ b/com.unity.visualeffectgraph/Editor/Models/Operators/VFXOperatorUtility.cs @@ -33,6 +33,8 @@ public static Dictionary GenerateExpressionConstant public static readonly Dictionary TauExpression = GenerateExpressionConstant(2.0f * Mathf.PI); public static readonly Dictionary E_NapierConstantExpression = GenerateExpressionConstant(Mathf.Exp(1)); public static readonly Dictionary EpsilonExpression = GenerateExpressionConstant(1e-5f); + public static readonly Dictionary EpsilonSqrExpression = GenerateExpressionConstant(1e-10f); + public enum Base { @@ -269,7 +271,7 @@ static public VFXExpression Normalize(VFXExpression v) static public VFXExpression SafeNormalize(VFXExpression v) { var sqrDist = Dot(v,v); - var condition = new VFXExpressionCondition(VFXValueType.Float, VFXCondition.Equal, VFXOperatorUtility.ZeroExpression[VFXValueType.Float], sqrDist); + var condition = new VFXExpressionCondition(VFXValueType.Float, VFXCondition.Less, sqrDist, VFXOperatorUtility.EpsilonSqrExpression[VFXValueType.Float]); return new VFXExpressionBranch(condition, VFXOperatorUtility.ZeroExpression[v.valueType], Normalize(v)); }