From 917e9e0b320775634dc2e710f7deac74fd0822f0 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 22 Oct 2020 23:30:02 +0800 Subject: * amplify shader editor --- .../SurfaceShaderINParentNode.cs | 122 +++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/SurfaceShaderInputs/SurfaceShaderINParentNode.cs (limited to 'Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/SurfaceShaderInputs/SurfaceShaderINParentNode.cs') diff --git a/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/SurfaceShaderInputs/SurfaceShaderINParentNode.cs b/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/SurfaceShaderInputs/SurfaceShaderINParentNode.cs new file mode 100644 index 00000000..e0f094b0 --- /dev/null +++ b/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/SurfaceShaderInputs/SurfaceShaderINParentNode.cs @@ -0,0 +1,122 @@ +// Amplify Shader Editor - Visual Shader Editing Tool +// Copyright (c) Amplify Creations, Lda + +using System; +using UnityEngine; + +namespace AmplifyShaderEditor +{ + [Serializable] + public class SurfaceShaderINParentNode : ParentNode + { + [SerializeField] + protected SurfaceInputs m_currentInput; + + [SerializeField] + protected string m_currentInputValueStr; + + [SerializeField] + protected string m_currentInputDecStr; + + protected override void CommonInit( int uniqueId ) + { + base.CommonInit( uniqueId ); + m_currentInput = SurfaceInputs.UV_COORDS; + m_textLabelWidth = 65; + m_customPrecision = true; + } + + public override void DrawProperties() + { + base.DrawProperties(); + DrawPrecisionProperty(); + } + //This needs to be called on the end of the CommonInit on all children + protected void InitialSetup() + { + m_currentInputValueStr = Constants.InputVarStr + "." + UIUtils.GetInputValueFromType( m_currentInput ); + + string outputName = "Out"; + switch ( m_currentInput ) + { + case SurfaceInputs.DEPTH: + { + AddOutputPort( WirePortDataType.FLOAT, outputName ); + } + break; + case SurfaceInputs.UV_COORDS: + { + outputName = "UV"; + AddOutputVectorPorts( WirePortDataType.FLOAT2, outputName ); + } + break; + case SurfaceInputs.UV2_COORDS: + { + outputName = "UV"; + AddOutputVectorPorts( WirePortDataType.FLOAT2, outputName ); + } + break; + case SurfaceInputs.VIEW_DIR: + { + outputName = "XYZ"; + AddOutputVectorPorts( WirePortDataType.FLOAT3, outputName ); + } + break; + case SurfaceInputs.COLOR: + { + outputName = "RGBA"; + AddOutputVectorPorts( WirePortDataType.FLOAT4, outputName ); + } + break; + case SurfaceInputs.SCREEN_POS: + { + outputName = "XYZW"; + AddOutputVectorPorts( WirePortDataType.FLOAT4, outputName ); + } + break; + case SurfaceInputs.WORLD_POS: + { + outputName = "XYZ"; + AddOutputVectorPorts( WirePortDataType.FLOAT3, outputName ); + } + break; + case SurfaceInputs.WORLD_REFL: + { + outputName = "XYZ"; + AddOutputVectorPorts( WirePortDataType.FLOAT3, outputName ); + } + break; + case SurfaceInputs.WORLD_NORMAL: + { + outputName = "XYZ"; + AddOutputVectorPorts( WirePortDataType.FLOAT3, outputName ); + } + break; + } + } + + public override string GenerateShaderForOutput( int outputId, ref MasterNodeDataCollector dataCollector, bool ignoreLocalVar ) + { + dataCollector.AddToInput( UniqueId, m_currentInput, CurrentPrecisionType ); + switch ( m_currentInput ) + { + case SurfaceInputs.VIEW_DIR: + case SurfaceInputs.WORLD_REFL: + case SurfaceInputs.WORLD_NORMAL: + { + dataCollector.AddToInput( UniqueId, SurfaceInputs.INTERNALDATA, addSemiColon: false ); + } + break; + case SurfaceInputs.WORLD_POS: + case SurfaceInputs.DEPTH: + case SurfaceInputs.UV_COORDS: + case SurfaceInputs.UV2_COORDS: + case SurfaceInputs.COLOR: + case SurfaceInputs.SCREEN_POS: break; + }; + + return GetOutputVectorItem( 0, outputId, m_currentInputValueStr ); + } + + } +} -- cgit v1.1-26-g67d0