DistanceBasedTessNode.cs 1.2 KB

123456789101112131415161718192021222324252627282930
  1. // Amplify Shader Editor - Visual Shader Editing Tool
  2. // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
  3. namespace AmplifyShaderEditor
  4. {
  5. [System.Serializable]
  6. [NodeAttributes( "Distance-based Tessellation", "Miscellaneous", "Calculates tessellation based on distance from camera" )]
  7. public sealed class DistanceBasedTessNode : TessellationParentNode
  8. {
  9. private const string FunctionBody = "UnityDistanceBasedTess( v0.vertex, v1.vertex, v2.vertex, {0},{1},{2})";
  10. protected override void CommonInit( int uniqueId )
  11. {
  12. base.CommonInit( uniqueId );
  13. AddInputPort( WirePortDataType.FLOAT, false,"Factor");
  14. AddInputPort( WirePortDataType.FLOAT, false, "Min Dist" );
  15. AddInputPort( WirePortDataType.FLOAT, false, "Max Dist" );
  16. AddOutputPort( WirePortDataType.FLOAT4, Constants.EmptyPortValue );
  17. }
  18. protected override string BuildTessellationFunction( ref MasterNodeDataCollector dataCollector )
  19. {
  20. return string.Format( FunctionBody,
  21. m_inputPorts[ 1 ].GeneratePortInstructions( ref dataCollector ),
  22. m_inputPorts[ 2 ].GeneratePortInstructions( ref dataCollector ),
  23. m_inputPorts[ 0 ].GeneratePortInstructions( ref dataCollector ) );
  24. }
  25. }
  26. }