summaryrefslogtreecommitdiff
path: root/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/Tessellation/DistanceBasedTessNode.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/Tessellation/DistanceBasedTessNode.cs')
-rw-r--r--Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/Tessellation/DistanceBasedTessNode.cs30
1 files changed, 30 insertions, 0 deletions
diff --git a/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/Tessellation/DistanceBasedTessNode.cs b/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/Tessellation/DistanceBasedTessNode.cs
new file mode 100644
index 00000000..c49df07f
--- /dev/null
+++ b/Assets/AmplifyShaderEditor/Plugins/Editor/Nodes/Vertex/Tessellation/DistanceBasedTessNode.cs
@@ -0,0 +1,30 @@
+
+// Amplify Shader Editor - Visual Shader Editing Tool
+// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
+
+
+namespace AmplifyShaderEditor
+{
+ [System.Serializable]
+ [NodeAttributes( "Distance-based Tessellation", "Miscellaneous", "Calculates tessellation based on distance from camera" )]
+ public sealed class DistanceBasedTessNode : TessellationParentNode
+ {
+ private const string FunctionBody = "UnityDistanceBasedTess( v0.vertex, v1.vertex, v2.vertex, {0},{1},{2})";
+ protected override void CommonInit( int uniqueId )
+ {
+ base.CommonInit( uniqueId );
+ AddInputPort( WirePortDataType.FLOAT, false,"Factor");
+ AddInputPort( WirePortDataType.FLOAT, false, "Min Dist" );
+ AddInputPort( WirePortDataType.FLOAT, false, "Max Dist" );
+ AddOutputPort( WirePortDataType.FLOAT4, Constants.EmptyPortValue );
+ }
+
+ protected override string BuildTessellationFunction( ref MasterNodeDataCollector dataCollector )
+ {
+ return string.Format( FunctionBody,
+ m_inputPorts[ 1 ].GeneratePortInstructions( ref dataCollector ),
+ m_inputPorts[ 2 ].GeneratePortInstructions( ref dataCollector ),
+ m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector ) );
+ }
+ }
+}