浏览代码

Transform Node Fixes

/main
Matt Dean 7 年前
当前提交
7b095256
共有 1 个文件被更改,包括 8 次插入7 次删除
  1. 15
      MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/Math/Vector/TransformNode.cs

15
MaterialGraphProject/Assets/UnityShaderEditor/Editor/Data/Nodes/Math/Vector/TransformNode.cs


{
NodeUtils.SlotConfigurationExceptionIfBadConfiguration(this, new[] { InputSlotId }, new[] { OutputSlotId });
string inputValue = GetSlotValue(InputSlotId, generationMode);
string targetTransformString = "tangentTransform_"+ spaceFrom.ToString();
string transformString = "";
bool requiresTangentTransform = false;

else if (spaceTo == CoordinateSpace.Tangent)
{
requiresTangentTransform = true;
transformString = "mul(tangentTransform, " + inputValue + ").xyz";
transformString = "mul("+ targetTransformString +", " + inputValue + ").xyz";
}
else if (spaceTo == CoordinateSpace.View)
{

else if (spaceTo == CoordinateSpace.Tangent)
{
requiresTangentTransform = true;
transformString = "mul( tangentTransform, mul( unity_ObjectToWorld, float4(" + inputValue + ", 0) ).xyz).xyz";
transformString = "mul( "+ targetTransformString +", mul( unity_ObjectToWorld, float4(" + inputValue + ", 0) ).xyz).xyz";
}
else if (spaceTo == CoordinateSpace.View)
{

requiresTangentTransform = true;
if (spaceTo == CoordinateSpace.World)
{
transformString = "mul( " + inputValue + ", tangentTransform ).xyz";
transformString = "mul( " + inputValue + ", "+ targetTransformString+ " ).xyz";
transformString = "mul( unity_WorldToObject, float4(mul(" + inputValue + ", tangentTransform ),0) ).xyz";
transformString = "mul( unity_WorldToObject, float4(mul(" + inputValue + ", " + targetTransformString + " ),0) ).xyz";
}
else if (spaceTo == CoordinateSpace.Tangent)
{

{
transformString = "mul( UNITY_MATRIX_V, float4(mul(" + inputValue + ", tangentTransform ),0) ).xyz";
transformString = "mul( UNITY_MATRIX_V, float4(mul(" + inputValue + ", " + targetTransformString + " ),0) ).xyz";
}
}
else if (spaceFrom == CoordinateSpace.View)

else if (spaceTo == CoordinateSpace.Tangent)
{
requiresTangentTransform = true;
transformString = "mul( tangentTransform, mul( float4(" + inputValue + ", 0), UNITY_MATRIX_V ).xyz ).xyz";
transformString = "mul( " + targetTransformString + ", mul( float4(" + inputValue + ", 0), UNITY_MATRIX_V ).xyz ).xyz";
}
else if (spaceTo == CoordinateSpace.View)
{

if (requiresTangentTransform)
visitor.AddShaderChunk("float3x3 tangentTransform = float3x3("+ spaceFrom.ToString() + "SpaceTangent, "+ spaceFrom.ToString() + "SpaceBiTangent, "+ spaceFrom.ToString() + "SpaceNormal);", false);
visitor.AddShaderChunk("float3x3 " + targetTransformString + " = float3x3("+ spaceFrom.ToString() + "SpaceTangent, "+ spaceFrom.ToString() + "SpaceBiTangent, "+ spaceFrom.ToString() + "SpaceNormal);", true);
visitor.AddShaderChunk(string.Format("{0} {1} = {2};",
ConvertConcreteSlotValueTypeToString(precision, FindOutputSlot<MaterialSlot>(OutputSlotId).concreteValueType),

正在加载...
取消
保存