diff options
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs')
-rw-r--r-- | Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs new file mode 100644 index 00000000..844675f4 --- /dev/null +++ b/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs @@ -0,0 +1,120 @@ +// Amplify Shader Editor - Visual Shader Editing Tool +// Copyright (c) Amplify Creations, Lda <info@amplify.pt> +// +// Custom Node Vertex To Fragment +// Donated by Jason Booth - http://u3d.as/DND + +using UnityEngine; + +namespace AmplifyShaderEditor +{ + [System.Serializable] + [NodeAttributes( "Vertex To Fragment", "Miscellaneous", "Pass vertex data to the pixel shader", null, KeyCode.None, true, false, null, null, "Jason Booth - http://u3d.as/DND" )] + public sealed class VertexToFragmentNode : SingleInputOp + { + + protected override void CommonInit( int uniqueId ) + { + base.CommonInit( uniqueId ); + m_inputPorts[ 0 ].AddPortForbiddenTypes( WirePortDataType.FLOAT3x3, + WirePortDataType.FLOAT4x4, + WirePortDataType.SAMPLER1D, + WirePortDataType.SAMPLER2D, + WirePortDataType.SAMPLER3D, + WirePortDataType.SAMPLERCUBE ); + m_inputPorts[ 0 ].Name = "(VS) In"; + m_outputPorts[ 0 ].Name = "Out"; + m_useInternalPortData = false; + m_previewShaderGUID = "74e4d859fbdb2c0468de3612145f4929"; + } + + public override string GenerateShaderForOutput( int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalVar ) + { + if( m_outputPorts[ 0 ].IsLocalValue( dataCollector.PortCategory ) ) + return m_outputPorts[ 0 ].LocalValue( dataCollector.PortCategory ); + + string varName = GenerateInputInVertex( ref dataCollector, 0, "vertexToFrag" + OutputId,true ); + m_outputPorts[ 0 ].SetLocalValue( varName, dataCollector.PortCategory ); + + return varName; + + ////TEMPLATES + //if( dataCollector.IsTemplate ) + //{ + // if( !dataCollector.IsFragmentCategory ) + // return m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector ); + + // string varName = "vertexToFrag" + OutputId; + // if( dataCollector.TemplateDataCollectorInstance.HasCustomInterpolatedData( varName ) ) + // return varName; + + // MasterNodePortCategory category = dataCollector.PortCategory; + // dataCollector.PortCategory = MasterNodePortCategory.Vertex; + // bool dirtyVertexVarsBefore = dataCollector.DirtyVertexVariables; + // ContainerGraph.ResetNodesLocalVariablesIfNot( this, MasterNodePortCategory.Vertex ); + + // string data = m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector ); + + // dataCollector.PortCategory = category; + // if( !dirtyVertexVarsBefore && dataCollector.DirtyVertexVariables ) + // { + // dataCollector.AddVertexInstruction( dataCollector.VertexLocalVariables, UniqueId, false ); + // dataCollector.ClearVertexLocalVariables(); + // ContainerGraph.ResetNodesLocalVariablesIfNot( this, MasterNodePortCategory.Vertex ); + // } + + // ContainerGraph.ResetNodesLocalVariablesIfNot( this, MasterNodePortCategory.Fragment ); + + // dataCollector.TemplateDataCollectorInstance.RegisterCustomInterpolatedData( varName, m_inputPorts[ 0 ].DataType, m_currentPrecisionType, data ); + // //return varName; + + // m_outputPorts[ 0 ].SetLocalValue( varName ); + // return m_outputPorts[ 0 ].LocalValue; + //} + + ////SURFACE + //{ + // if( !dataCollector.IsFragmentCategory ) + // { + // return m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector ); + // } + + // if( dataCollector.TesselationActive ) + // { + // UIUtils.ShowMessage( "Unable to use Vertex to Frag when Tessellation is active" ); + // return m_outputPorts[ 0 ].ErrorValue; + // } + + + // string interpName = "data" + OutputId; + // dataCollector.AddToInput( UniqueId, interpName, m_inputPorts[ 0 ].DataType, m_currentPrecisionType ); + + // MasterNodePortCategory portCategory = dataCollector.PortCategory; + // dataCollector.PortCategory = MasterNodePortCategory.Vertex; + + // bool dirtyVertexVarsBefore = dataCollector.DirtyVertexVariables; + + // ContainerGraph.ResetNodesLocalVariablesIfNot( this, MasterNodePortCategory.Vertex ); + + // string vertexVarValue = m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector ); + // dataCollector.AddLocalVariable( UniqueId, Constants.VertexShaderOutputStr + "." + interpName, vertexVarValue + ";" ); + + // dataCollector.PortCategory = portCategory; + + // if( !dirtyVertexVarsBefore && dataCollector.DirtyVertexVariables ) + // { + // dataCollector.AddVertexInstruction( dataCollector.VertexLocalVariables, UniqueId, false ); + // dataCollector.ClearVertexLocalVariables(); + // ContainerGraph.ResetNodesLocalVariablesIfNot( this, MasterNodePortCategory.Vertex ); + // } + + // ContainerGraph.ResetNodesLocalVariablesIfNot( this, MasterNodePortCategory.Fragment ); + + // //return Constants.InputVarStr + "." + interpName; + + // m_outputPorts[ 0 ].SetLocalValue( Constants.InputVarStr + "." + interpName ); + // return m_outputPorts[ 0 ].LocalValue; + //} + } + } +} |