summaryrefslogtreecommitdiff
path: root/Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs')
-rw-r--r--Assets/ThirdParty/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/VertexToFragmentNode.cs120
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;
+ //}
+ }
+ }
+}