summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--3ner.shader290
-rw-r--r--Scripts/Fold/Editor/FoldNodeSerialized.cs4
-rw-r--r--Scripts/Fold/Editor/KeyframeNodeView.cs53
-rw-r--r--Scripts/Fold/Editor/PointAlignNode.cs2
-rw-r--r--features.cginc27
-rw-r--r--globals.cginc255
-rw-r--r--vertex.cginc890
7 files changed, 1024 insertions, 497 deletions
diff --git a/3ner.shader b/3ner.shader
index d8ec8fe..8815801 100644
--- a/3ner.shader
+++ b/3ner.shader
@@ -179,121 +179,181 @@ Shader "yum_food/3ner"
[ThryToggle(_VERTEX_DEFORMATION_FRAGMENT_NORMALS)] _Vertex_Deformation_Fragment_Normals_Enabled("Fragment normals", Float) = 0
[ThryToggle(_VERTEX_DEFORMATION_TESSELLATION)] _Vertex_Deformation_Tessellation_Enabled("Tesellation support", Float) = 1
- //ifex _Vertex_Deformation_Tubes_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Tubes("Tubes", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_TUBES)] _Vertex_Deformation_Tubes_Enabled("Enable", Float) = 0
-
- //ifex _Vertex_Deformation_Tube_To_Plane_0_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Tube_To_Plane_0("Tube to Plane 0", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_TUBE_TO_PLANE_0)] _Vertex_Deformation_Tube_To_Plane_0_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Tube_To_Plane_0_p("p", Vector) = (0, 0, 0.3183099)
- _Vertex_Deformation_Tube_To_Plane_0_r("r", Vector) = (0, 0, -1)
- _Vertex_Deformation_Tube_To_Plane_0_s("s", Vector) = (0, 1, 0)
- _Vertex_Deformation_Tube_To_Plane_0_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Tube_To_Plane_0("Tube to Plane 0", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Axis_Align_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Axis_Align("Axis Align", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_AXIS_ALIGN)] _Vertex_Deformation_Axis_Align_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Axis_Align_po("po", Vector) = (0, 0, 0)
- _Vertex_Deformation_Axis_Align_pp("pp", Vector) = (0, 0, 1)
- _Vertex_Deformation_Axis_Align_r("r", Vector) = (0, 1, 0)
- _Vertex_Deformation_Axis_Align_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Axis_Align("Axis Align", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Tube_To_Plane_1_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Tube_To_Plane_1("Tube to Plane 1", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_TUBE_TO_PLANE_1)] _Vertex_Deformation_Tube_To_Plane_1_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Tube_To_Plane_1_p("p", Vector) = (0, 0, 0.3183099)
- _Vertex_Deformation_Tube_To_Plane_1_r("r", Vector) = (0, 0, -1)
- _Vertex_Deformation_Tube_To_Plane_1_s("s", Vector) = (0, 1, 0)
- _Vertex_Deformation_Tube_To_Plane_1_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Tube_To_Plane_1("Tube to Plane 1", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Point_Align_0_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Point_Align_0("Point Align 0", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_POINT_ALIGN_0)] _Vertex_Deformation_Point_Align_0_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Point_Align_0_po("po", Vector) = (0, 0, 0)
- _Vertex_Deformation_Point_Align_0_pp("pp", Vector) = (0, 0, 1)
- _Vertex_Deformation_Point_Align_0_r("r", Vector) = (0, 1, 0)
- _Vertex_Deformation_Point_Align_0_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Point_Align_0("Point Align 0", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Plane_To_Tube_0_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Plane_To_Tube_0("Plane to Tube 0", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_PLANE_TO_TUBE_0)] _Vertex_Deformation_Plane_To_Tube_0_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Plane_To_Tube_0_p("p", Vector) = (0, 0, 1)
- _Vertex_Deformation_Plane_To_Tube_0_r("r", Vector) = (0, 0, -1)
- _Vertex_Deformation_Plane_To_Tube_0_s("s", Vector) = (0, 0, -1)
- _Vertex_Deformation_Plane_To_Tube_0_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Plane_To_Tube_0("Plane to Tube 0", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Point_Align_1_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Point_Align_1("Point Align 0", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_POINT_ALIGN_1)] _Vertex_Deformation_Point_Align_1_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Point_Align_1_po("po", Vector) = (0, 0, 0)
- _Vertex_Deformation_Point_Align_1_pp("pp", Vector) = (0, 0, 1)
- _Vertex_Deformation_Point_Align_1_r("r", Vector) = (0, 1, 0)
- _Vertex_Deformation_Point_Align_1_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Point_Align_1("Point Align 0", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Plane_To_Tube_1_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Plane_To_Tube_1("Plane to Tube 1", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_PLANE_TO_TUBE_1)] _Vertex_Deformation_Plane_To_Tube_1_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Plane_To_Tube_1_p("p", Vector) = (0, 0, 1)
- _Vertex_Deformation_Plane_To_Tube_1_r("r", Vector) = (0, 0, -1)
- _Vertex_Deformation_Plane_To_Tube_1_s("s", Vector) = (0, 0, -1)
- _Vertex_Deformation_Plane_To_Tube_1_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Plane_To_Tube_1("Plane to Tube 1", Float) = 0
- //endex
- [HideInInspector] m_end_Vertex_Deformation_Tubes("Tubes", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Norm_Conversion_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Norm_Conversion("Norm Conversion", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_NORM_CONVERSION)] _Vertex_Deformation_Norm_Conversion_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Norm_Conversion_Input_k("Input norm", Range(-10, 10)) = 2
- _Vertex_Deformation_Norm_Conversion_Output_k("Output norm", Range(-10, 10)) = 1
- _Vertex_Deformation_Norm_Conversion_t("t", Range(0,1)) = 0
- [HideInInspector] m_end_Vertex_Deformation_Norm_Conversion("Norm Conversion", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Seal_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Seal("Seal", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_SEAL)] _Vertex_Deformation_Seal_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Seal_A("A", Range(0,1)) = 0.1
- _Vertex_Deformation_Seal_k("k", Range(0,3)) = 1
- _Vertex_Deformation_Seal_t("t", Range(0,1)) = 0.1
- [HideInInspector] m_end_Vertex_Deformation_Seal("Seal", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_Sine_Waves_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_Sine_Waves("Sine Waves", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_SINE_WAVES)] _Vertex_Deformation_Sine_Waves_Enabled("Enable", Float) = 0
- _Vertex_Deformation_Sine_Waves_Amplitude("Amplitude (4 waves)", Vector) = (0.1, 0, 0, 0)
- _Vertex_Deformation_Sine_Waves_Direction("Direction", Vector) = (1, 0, 0, 0)
- _Vertex_Deformation_Sine_Waves_k("Spatial frequency k", Vector) = (6.28, 0, 0)
- _Vertex_Deformation_Sine_Waves_omega("Temporal frequency omega", Vector) = (6.28, 0, 0)
- [HideInInspector] m_end_Vertex_Deformation_Sine_Waves("Sine Waves", Float) = 0
- //endex
-
- //ifex _Vertex_Deformation_FBM_Enabled==0
- [HideInInspector] m_start_Vertex_Deformation_FBM("FBM", Float) = 0
- [ThryToggle(_VERTEX_DEFORMATION_FBM)] _Vertex_Deformation_FBM_Enabled("Enable", Float) = 0
- _Vertex_Deformation_FBM_Velocity("Velocity", Vector) = (0, 0, .01)
- _Vertex_Deformation_FBM_Gain("Gain", Range(0,1)) = 0.5
- _Vertex_Deformation_FBM_Lacunarity("Lacunarity", Range(1,10)) = 2
- _Vertex_Deformation_FBM_Amplitude("Amplitude", Vector) = (1, 1, 1, 0)
- _Vertex_Deformation_FBM_Period("Period", Vector) = (1, 1, 1, 0)
- [IntRange] _Vertex_Deformation_FBM_Octaves("Octaves", Range(1, 5)) = 3
- [HideInInspector] m_end_Vertex_Deformation_FBM("FBM", Float) = 0
- //endex
+ _Vertex_Deformation_Slot_0_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_0_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_0_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_0_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_0_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_0_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_0_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_0_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_0_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_0_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_1_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_1_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_1_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_1_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_1_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_1_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_1_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_1_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_1_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_1_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_2_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_2_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_2_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_2_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_2_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_2_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_2_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_2_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_2_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_2_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_3_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_3_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_3_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_3_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_3_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_3_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_3_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_3_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_3_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_3_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_4_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_4_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_4_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_4_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_4_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_4_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_4_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_4_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_4_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_4_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_5_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_5_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_5_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_5_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_5_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_5_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_5_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_5_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_5_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_5_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_6_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_6_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_6_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_6_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_6_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_6_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_6_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_6_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_6_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_6_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_7_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_7_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_7_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_7_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_7_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_7_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_7_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_7_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_7_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_7_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_8_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_8_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_8_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_8_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_8_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_8_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_8_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_8_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_8_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_8_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_9_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_9_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_9_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_9_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_9_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_9_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_9_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_9_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_9_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_9_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_10_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_10_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_10_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_10_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_10_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_10_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_10_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_10_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_10_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_10_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_11_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_11_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_11_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_11_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_11_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_11_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_11_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_11_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_11_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_11_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_12_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_12_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_12_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_12_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_12_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_12_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_12_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_12_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_12_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_12_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_13_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_13_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_13_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_13_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_13_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_13_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_13_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_13_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_13_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_13_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_14_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_14_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_14_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_14_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_14_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_14_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_14_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_14_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_14_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_14_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
+
+ _Vertex_Deformation_Slot_15_Enabled("Enabled", Float) = 0
+ _Vertex_Deformation_Slot_15_Opcode("Opcode", Integer) = 0
+ _Vertex_Deformation_Slot_15_Float_0("Float 0", Float) = 0
+ _Vertex_Deformation_Slot_15_Float_1("Float 1", Float) = 0
+ _Vertex_Deformation_Slot_15_Float_2("Float 2", Float) = 0
+ _Vertex_Deformation_Slot_15_Float_3("Float 3", Float) = 0
+ _Vertex_Deformation_Slot_15_Vector_0("Vector 0", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_15_Vector_1("Vector 1", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_15_Vector_2("Vector 2", Vector) = (0, 0, 0, 0)
+ _Vertex_Deformation_Slot_15_Vector_3("Vector 3", Vector) = (0, 0, 0, 0)
[HideInInspector] m_end_Vertex_Deformation("Vertex Deformation", Float) = 0
//endex
diff --git a/Scripts/Fold/Editor/FoldNodeSerialized.cs b/Scripts/Fold/Editor/FoldNodeSerialized.cs
index 4836811..62431ae 100644
--- a/Scripts/Fold/Editor/FoldNodeSerialized.cs
+++ b/Scripts/Fold/Editor/FoldNodeSerialized.cs
@@ -2,11 +2,15 @@ using UnityEngine;
public class FoldNodeSerialized
{
+ public int opcode;
+
+ // Correspond to _Vertex_Deformation_Float_0, etc.
public float float0;
public float float1;
public float float2;
public float float3;
+ // _Vertex_Deformation_Vector_0, etc.
public Vector4 vec0;
public Vector4 vec1;
public Vector4 vec2;
diff --git a/Scripts/Fold/Editor/KeyframeNodeView.cs b/Scripts/Fold/Editor/KeyframeNodeView.cs
index fd90c75..225b5b6 100644
--- a/Scripts/Fold/Editor/KeyframeNodeView.cs
+++ b/Scripts/Fold/Editor/KeyframeNodeView.cs
@@ -2,6 +2,7 @@ using GraphProcessor;
using UnityEngine.UIElements;
using UnityEngine;
using System.Linq;
+using System.Collections.Generic;
[NodeCustomEditor(typeof(KeyframeNode))]
public class KeyframeNodeView : BaseNodeView
@@ -25,10 +26,58 @@ public class KeyframeNodeView : BaseNodeView
void OnGenerateClick()
{
var go = GetConnectedGameObject();
- if (go?.GetComponent<MeshRenderer>() == null) return;
+ if (go == null) return;
+ var rend = go.GetComponent<MeshRenderer>();
+ if (rend == null) return;
var foldNode = GetConnectedFoldNode();
- Debug.Log($"Generating Keyframe for '{go.name}' using Fold Data: {(foldNode?.name ?? "None")}");
+
+ // Accumulate nodes. We are going backwards from the output node
+ // (KeyframeNode) to the root node.
+ var foldNodes = new Stack<BaseFoldNode>();
+ var cur = foldNode;
+ while (cur != null) {
+ foldNodes.Push(cur);
+ cur = GetInputFoldNode(cur);
+ }
+
+ var mpb = new MaterialPropertyBlock();
+ rend.GetPropertyBlock(mpb);
+
+ // Set material properties for all 16 slots.
+ for (int i = 0; i < 16; i++) {
+ string slotPrefix = $"_Vertex_Deformation_Slot_{i}_";
+ BaseFoldNode node = (foldNodes.Count > 0) ? foldNodes.Pop() : null;
+ FoldNodeSerialized data = node?.Serialize();
+
+ bool active = data != null;
+ mpb.SetFloat(slotPrefix + "Enabled", active ? 1.0f : 0.0f);
+ mpb.SetInt(slotPrefix + "Opcode", active ? data.opcode : 0);
+
+ mpb.SetFloat(slotPrefix + "Float_0", active ? data.float0 : 0.0f);
+ mpb.SetFloat(slotPrefix + "Float_1", active ? data.float1 : 0.0f);
+ mpb.SetFloat(slotPrefix + "Float_2", active ? data.float2 : 0.0f);
+ mpb.SetFloat(slotPrefix + "Float_3", active ? data.float3 : 0.0f);
+
+ mpb.SetVector(slotPrefix + "Vector_0", active ? data.vec0 : Vector4.zero);
+ mpb.SetVector(slotPrefix + "Vector_1", active ? data.vec1 : Vector4.zero);
+ mpb.SetVector(slotPrefix + "Vector_2", active ? data.vec2 : Vector4.zero);
+ mpb.SetVector(slotPrefix + "Vector_3", active ? data.vec3 : Vector4.zero);
+ }
+
+ rend.SetPropertyBlock(mpb);
+ Debug.Log($"Generated Keyframe for '{go.name}' with properties applied to all 16 slots.");
+ }
+
+ BaseFoldNode GetInputFoldNode(BaseFoldNode node)
+ {
+ // Traverse via edges in the graph model, as 'input' field might not be populated in Editor
+ var port = node.GetPort(nameof(BaseFoldNode.input), null);
+ if (port == null) return null;
+
+ // Find the edge connected to this input port
+ var edge = node.graph.edges.FirstOrDefault(e => e.inputPort == port);
+ return edge?.outputNode as BaseFoldNode;
}
T GetConnectedNode<T>(string fieldName) where T : class
diff --git a/Scripts/Fold/Editor/PointAlignNode.cs b/Scripts/Fold/Editor/PointAlignNode.cs
index 7ab094b..c113928 100644
--- a/Scripts/Fold/Editor/PointAlignNode.cs
+++ b/Scripts/Fold/Editor/PointAlignNode.cs
@@ -15,7 +15,7 @@ public class PointAlignNode : BaseFoldNode
public override FoldNodeSerialized Serialize()
{
- return new FoldNodeSerialized { vec0 = po };
+ return new FoldNodeSerialized { opcode = 0, vec0 = po };
}
}
diff --git a/features.cginc b/features.cginc
index 17f0566..f693049 100644
--- a/features.cginc
+++ b/features.cginc
@@ -37,33 +37,6 @@
#pragma shader_feature_local _VERTEX_DEFORMATION_TESSELLATION
//endex
-//ifex _Vertex_Deformation_Tubes_Enabled==0
-#pragma shader_feature_local _VERTEX_DEFORMATION_TUBES
-#pragma shader_feature_local _VERTEX_DEFORMATION_TUBE_TO_PLANE_0
-#pragma shader_feature_local _VERTEX_DEFORMATION_AXIS_ALIGN
-#pragma shader_feature_local _VERTEX_DEFORMATION_TUBE_TO_PLANE_1
-#pragma shader_feature_local _VERTEX_DEFORMATION_PLANE_TO_TUBE_0
-#pragma shader_feature_local _VERTEX_DEFORMATION_POINT_ALIGN_0
-#pragma shader_feature_local _VERTEX_DEFORMATION_POINT_ALIGN_1
-#pragma shader_feature_local _VERTEX_DEFORMATION_PLANE_TO_TUBE_1
-//endex
-
-//ifex _Vertex_Deformation_L2_L1_Enabled==0
-#pragma shader_feature_local _VERTEX_DEFORMATION_NORM_CONVERSION
-//endex
-
-//ifex _Vertex_Deformation_Seal_Enabled==0
-#pragma shader_feature_local _VERTEX_DEFORMATION_SEAL
-//endex
-
-//ifex _Vertex_Deformation_Sine_Waves_Enabled==0
-#pragma shader_feature_local _VERTEX_DEFORMATION_SINE_WAVES
-//endex
-
-//ifex _Vertex_Deformation_FBM_Enabled==0
-#pragma shader_feature_local _VERTEX_DEFORMATION_FBM
-//endex
-
//ifex _Unlit==0
#pragma shader_feature_local _UNLIT
//endex
diff --git a/globals.cginc b/globals.cginc
index ddb126c..911aceb 100644
--- a/globals.cginc
+++ b/globals.cginc
@@ -75,83 +75,6 @@ float3 _Cloth_Sheen_Color;
texture2D _Cloth_Sheen_DFG_LUT;
#endif // _CLOTH_SHEEN
-#if defined(_VERTEX_DEFORMATION_TUBE_TO_PLANE_0)
-float3 _Vertex_Deformation_Tube_To_Plane_0_p;
-float3 _Vertex_Deformation_Tube_To_Plane_0_r;
-float3 _Vertex_Deformation_Tube_To_Plane_0_s;
-float _Vertex_Deformation_Tube_To_Plane_0_t;
-#endif // _VERTEX_DEFORMATION_TUBE_TO_PLANE_0
-
-#if defined(_VERTEX_DEFORMATION_AXIS_ALIGN)
-float3 _Vertex_Deformation_Axis_Align_po;
-float3 _Vertex_Deformation_Axis_Align_pp;
-float3 _Vertex_Deformation_Axis_Align_r;
-float _Vertex_Deformation_Axis_Align_t;
-#endif // _VERTEX_DEFORMATION_AXIS_ALIGN
-
-#if defined(_VERTEX_DEFORMATION_TUBE_TO_PLANE_1)
-float3 _Vertex_Deformation_Tube_To_Plane_1_p;
-float3 _Vertex_Deformation_Tube_To_Plane_1_r;
-float3 _Vertex_Deformation_Tube_To_Plane_1_s;
-float _Vertex_Deformation_Tube_To_Plane_1_t;
-#endif // _VERTEX_DEFORMATION_TUBE_TO_PLANE_1
-
-#if defined(_VERTEX_DEFORMATION_PLANE_TO_TUBE_0)
-float3 _Vertex_Deformation_Plane_To_Tube_0_p;
-float3 _Vertex_Deformation_Plane_To_Tube_0_r;
-float3 _Vertex_Deformation_Plane_To_Tube_0_s;
-float _Vertex_Deformation_Plane_To_Tube_0_t;
-#endif // _VERTEX_DEFORMATION_PLANE_TO_TUBE_0
-
-#if defined(_VERTEX_DEFORMATION_POINT_ALIGN_0)
-float3 _Vertex_Deformation_Point_Align_0_po;
-float3 _Vertex_Deformation_Point_Align_0_pp;
-float3 _Vertex_Deformation_Point_Align_0_r;
-float _Vertex_Deformation_Point_Align_0_t;
-#endif // _VERTEX_DEFORMATION_POINT_ALIGN_0
-
-#if defined(_VERTEX_DEFORMATION_POINT_ALIGN_1)
-float3 _Vertex_Deformation_Point_Align_1_po;
-float3 _Vertex_Deformation_Point_Align_1_pp;
-float3 _Vertex_Deformation_Point_Align_1_r;
-float _Vertex_Deformation_Point_Align_1_t;
-#endif // _VERTEX_DEFORMATION_POINT_ALIGN_1
-
-#if defined(_VERTEX_DEFORMATION_PLANE_TO_TUBE_1)
-float3 _Vertex_Deformation_Plane_To_Tube_1_p;
-float3 _Vertex_Deformation_Plane_To_Tube_1_r;
-float3 _Vertex_Deformation_Plane_To_Tube_1_s;
-float _Vertex_Deformation_Plane_To_Tube_1_t;
-#endif // _VERTEX_DEFORMATION_PLANE_TO_TUBE_1
-
-#if defined(_VERTEX_DEFORMATION_NORM_CONVERSION)
-float _Vertex_Deformation_Norm_Conversion_Input_k;
-float _Vertex_Deformation_Norm_Conversion_Output_k;
-float _Vertex_Deformation_Norm_Conversion_t;
-#endif // _VERTEX_DEFORMATION_NORM_CONVERSION
-
-#if defined(_VERTEX_DEFORMATION_SEAL)
-float _Vertex_Deformation_Seal_A;
-float _Vertex_Deformation_Seal_k;
-float _Vertex_Deformation_Seal_t;
-#endif // _VERTEX_DEFORMATION_SEAL
-
-#if defined(_VERTEX_DEFORMATION_SINE_WAVES)
-float3 _Vertex_Deformation_Sine_Waves_Amplitude;
-float3 _Vertex_Deformation_Sine_Waves_Direction;
-float3 _Vertex_Deformation_Sine_Waves_k;
-float3 _Vertex_Deformation_Sine_Waves_omega;
-#endif // _VERTEX_DEFORMATION_SINE_WAVES
-
-#if defined(_VERTEX_DEFORMATION_FBM)
-float3 _Vertex_Deformation_FBM_Velocity;
-float3 _Vertex_Deformation_FBM_Amplitude;
-float _Vertex_Deformation_FBM_Gain;
-float _Vertex_Deformation_FBM_Lacunarity;
-float3 _Vertex_Deformation_FBM_Period;
-float _Vertex_Deformation_FBM_Octaves;
-#endif // _VERTEX_DEFORMATION_FBM
-
#if defined(_UV_SCROLL)
float2 _UV_Scroll_Speed;
#endif // _UV_SCROLL
@@ -243,4 +166,182 @@ float _Ray_Marching_Hexagon_Radius;
float _Ray_Marching_Hexagon_Height;
#endif // _RAY_MARCHING_HEXAGON
+#if defined(_VERTEX_DEFORMATION)
+float _Vertex_Deformation_Slot_0_Enabled;
+int _Vertex_Deformation_Slot_0_Opcode;
+float _Vertex_Deformation_Slot_0_Float_0;
+float _Vertex_Deformation_Slot_0_Float_1;
+float _Vertex_Deformation_Slot_0_Float_2;
+float _Vertex_Deformation_Slot_0_Float_3;
+float4 _Vertex_Deformation_Slot_0_Vector_0;
+float4 _Vertex_Deformation_Slot_0_Vector_1;
+float4 _Vertex_Deformation_Slot_0_Vector_2;
+float4 _Vertex_Deformation_Slot_0_Vector_3;
+
+float _Vertex_Deformation_Slot_1_Enabled;
+int _Vertex_Deformation_Slot_1_Opcode;
+float _Vertex_Deformation_Slot_1_Float_0;
+float _Vertex_Deformation_Slot_1_Float_1;
+float _Vertex_Deformation_Slot_1_Float_2;
+float _Vertex_Deformation_Slot_1_Float_3;
+float4 _Vertex_Deformation_Slot_1_Vector_0;
+float4 _Vertex_Deformation_Slot_1_Vector_1;
+float4 _Vertex_Deformation_Slot_1_Vector_2;
+float4 _Vertex_Deformation_Slot_1_Vector_3;
+
+float _Vertex_Deformation_Slot_2_Enabled;
+int _Vertex_Deformation_Slot_2_Opcode;
+float _Vertex_Deformation_Slot_2_Float_0;
+float _Vertex_Deformation_Slot_2_Float_1;
+float _Vertex_Deformation_Slot_2_Float_2;
+float _Vertex_Deformation_Slot_2_Float_3;
+float4 _Vertex_Deformation_Slot_2_Vector_0;
+float4 _Vertex_Deformation_Slot_2_Vector_1;
+float4 _Vertex_Deformation_Slot_2_Vector_2;
+float4 _Vertex_Deformation_Slot_2_Vector_3;
+
+float _Vertex_Deformation_Slot_3_Enabled;
+int _Vertex_Deformation_Slot_3_Opcode;
+float _Vertex_Deformation_Slot_3_Float_0;
+float _Vertex_Deformation_Slot_3_Float_1;
+float _Vertex_Deformation_Slot_3_Float_2;
+float _Vertex_Deformation_Slot_3_Float_3;
+float4 _Vertex_Deformation_Slot_3_Vector_0;
+float4 _Vertex_Deformation_Slot_3_Vector_1;
+float4 _Vertex_Deformation_Slot_3_Vector_2;
+float4 _Vertex_Deformation_Slot_3_Vector_3;
+
+float _Vertex_Deformation_Slot_4_Enabled;
+int _Vertex_Deformation_Slot_4_Opcode;
+float _Vertex_Deformation_Slot_4_Float_0;
+float _Vertex_Deformation_Slot_4_Float_1;
+float _Vertex_Deformation_Slot_4_Float_2;
+float _Vertex_Deformation_Slot_4_Float_3;
+float4 _Vertex_Deformation_Slot_4_Vector_0;
+float4 _Vertex_Deformation_Slot_4_Vector_1;
+float4 _Vertex_Deformation_Slot_4_Vector_2;
+float4 _Vertex_Deformation_Slot_4_Vector_3;
+
+float _Vertex_Deformation_Slot_5_Enabled;
+int _Vertex_Deformation_Slot_5_Opcode;
+float _Vertex_Deformation_Slot_5_Float_0;
+float _Vertex_Deformation_Slot_5_Float_1;
+float _Vertex_Deformation_Slot_5_Float_2;
+float _Vertex_Deformation_Slot_5_Float_3;
+float4 _Vertex_Deformation_Slot_5_Vector_0;
+float4 _Vertex_Deformation_Slot_5_Vector_1;
+float4 _Vertex_Deformation_Slot_5_Vector_2;
+float4 _Vertex_Deformation_Slot_5_Vector_3;
+
+float _Vertex_Deformation_Slot_6_Enabled;
+int _Vertex_Deformation_Slot_6_Opcode;
+float _Vertex_Deformation_Slot_6_Float_0;
+float _Vertex_Deformation_Slot_6_Float_1;
+float _Vertex_Deformation_Slot_6_Float_2;
+float _Vertex_Deformation_Slot_6_Float_3;
+float4 _Vertex_Deformation_Slot_6_Vector_0;
+float4 _Vertex_Deformation_Slot_6_Vector_1;
+float4 _Vertex_Deformation_Slot_6_Vector_2;
+float4 _Vertex_Deformation_Slot_6_Vector_3;
+
+float _Vertex_Deformation_Slot_7_Enabled;
+int _Vertex_Deformation_Slot_7_Opcode;
+float _Vertex_Deformation_Slot_7_Float_0;
+float _Vertex_Deformation_Slot_7_Float_1;
+float _Vertex_Deformation_Slot_7_Float_2;
+float _Vertex_Deformation_Slot_7_Float_3;
+float4 _Vertex_Deformation_Slot_7_Vector_0;
+float4 _Vertex_Deformation_Slot_7_Vector_1;
+float4 _Vertex_Deformation_Slot_7_Vector_2;
+float4 _Vertex_Deformation_Slot_7_Vector_3;
+
+float _Vertex_Deformation_Slot_8_Enabled;
+int _Vertex_Deformation_Slot_8_Opcode;
+float _Vertex_Deformation_Slot_8_Float_0;
+float _Vertex_Deformation_Slot_8_Float_1;
+float _Vertex_Deformation_Slot_8_Float_2;
+float _Vertex_Deformation_Slot_8_Float_3;
+float4 _Vertex_Deformation_Slot_8_Vector_0;
+float4 _Vertex_Deformation_Slot_8_Vector_1;
+float4 _Vertex_Deformation_Slot_8_Vector_2;
+float4 _Vertex_Deformation_Slot_8_Vector_3;
+
+float _Vertex_Deformation_Slot_9_Enabled;
+int _Vertex_Deformation_Slot_9_Opcode;
+float _Vertex_Deformation_Slot_9_Float_0;
+float _Vertex_Deformation_Slot_9_Float_1;
+float _Vertex_Deformation_Slot_9_Float_2;
+float _Vertex_Deformation_Slot_9_Float_3;
+float4 _Vertex_Deformation_Slot_9_Vector_0;
+float4 _Vertex_Deformation_Slot_9_Vector_1;
+float4 _Vertex_Deformation_Slot_9_Vector_2;
+float4 _Vertex_Deformation_Slot_9_Vector_3;
+
+float _Vertex_Deformation_Slot_10_Enabled;
+int _Vertex_Deformation_Slot_10_Opcode;
+float _Vertex_Deformation_Slot_10_Float_0;
+float _Vertex_Deformation_Slot_10_Float_1;
+float _Vertex_Deformation_Slot_10_Float_2;
+float _Vertex_Deformation_Slot_10_Float_3;
+float4 _Vertex_Deformation_Slot_10_Vector_0;
+float4 _Vertex_Deformation_Slot_10_Vector_1;
+float4 _Vertex_Deformation_Slot_10_Vector_2;
+float4 _Vertex_Deformation_Slot_10_Vector_3;
+
+float _Vertex_Deformation_Slot_11_Enabled;
+int _Vertex_Deformation_Slot_11_Opcode;
+float _Vertex_Deformation_Slot_11_Float_0;
+float _Vertex_Deformation_Slot_11_Float_1;
+float _Vertex_Deformation_Slot_11_Float_2;
+float _Vertex_Deformation_Slot_11_Float_3;
+float4 _Vertex_Deformation_Slot_11_Vector_0;
+float4 _Vertex_Deformation_Slot_11_Vector_1;
+float4 _Vertex_Deformation_Slot_11_Vector_2;
+float4 _Vertex_Deformation_Slot_11_Vector_3;
+
+float _Vertex_Deformation_Slot_12_Enabled;
+int _Vertex_Deformation_Slot_12_Opcode;
+float _Vertex_Deformation_Slot_12_Float_0;
+float _Vertex_Deformation_Slot_12_Float_1;
+float _Vertex_Deformation_Slot_12_Float_2;
+float _Vertex_Deformation_Slot_12_Float_3;
+float4 _Vertex_Deformation_Slot_12_Vector_0;
+float4 _Vertex_Deformation_Slot_12_Vector_1;
+float4 _Vertex_Deformation_Slot_12_Vector_2;
+float4 _Vertex_Deformation_Slot_12_Vector_3;
+
+float _Vertex_Deformation_Slot_13_Enabled;
+int _Vertex_Deformation_Slot_13_Opcode;
+float _Vertex_Deformation_Slot_13_Float_0;
+float _Vertex_Deformation_Slot_13_Float_1;
+float _Vertex_Deformation_Slot_13_Float_2;
+float _Vertex_Deformation_Slot_13_Float_3;
+float4 _Vertex_Deformation_Slot_13_Vector_0;
+float4 _Vertex_Deformation_Slot_13_Vector_1;
+float4 _Vertex_Deformation_Slot_13_Vector_2;
+float4 _Vertex_Deformation_Slot_13_Vector_3;
+
+float _Vertex_Deformation_Slot_14_Enabled;
+int _Vertex_Deformation_Slot_14_Opcode;
+float _Vertex_Deformation_Slot_14_Float_0;
+float _Vertex_Deformation_Slot_14_Float_1;
+float _Vertex_Deformation_Slot_14_Float_2;
+float _Vertex_Deformation_Slot_14_Float_3;
+float4 _Vertex_Deformation_Slot_14_Vector_0;
+float4 _Vertex_Deformation_Slot_14_Vector_1;
+float4 _Vertex_Deformation_Slot_14_Vector_2;
+float4 _Vertex_Deformation_Slot_14_Vector_3;
+
+float _Vertex_Deformation_Slot_15_Enabled;
+int _Vertex_Deformation_Slot_15_Opcode;
+float _Vertex_Deformation_Slot_15_Float_0;
+float _Vertex_Deformation_Slot_15_Float_1;
+float _Vertex_Deformation_Slot_15_Float_2;
+float _Vertex_Deformation_Slot_15_Float_3;
+float4 _Vertex_Deformation_Slot_15_Vector_0;
+float4 _Vertex_Deformation_Slot_15_Vector_1;
+float4 _Vertex_Deformation_Slot_15_Vector_2;
+float4 _Vertex_Deformation_Slot_15_Vector_3;
+#endif // _VERTEX_DEFORMATION
+
#endif // __GLOBALS_INC
diff --git a/vertex.cginc b/vertex.cginc
index acc6d60..ac2c6aa 100644
--- a/vertex.cginc
+++ b/vertex.cginc
@@ -4,296 +4,636 @@
#include "globals.cginc"
#include "vertex_deformation.hlsl"
-#define FOO(x) (x)
-
-#if defined(_VERTEX_DEFORMATION_TUBE_TO_PLANE_0)
-#define VERTEX_DEFORM_TUBE_TO_PLANE_0_PREAMBLE \
- float3 p = _Vertex_Deformation_Tube_To_Plane_0_p; \
- float3 r = _Vertex_Deformation_Tube_To_Plane_0_r; \
- float3 s = _Vertex_Deformation_Tube_To_Plane_0_s; \
- float t = _Vertex_Deformation_Tube_To_Plane_0_t
-#define VERTEX_DEFORM_TUBE_TO_PLANE_0_POS \
- objPos = tube_to_plane(objPos, p, r, s, t)
-#define VERTEX_DEFORM_TUBE_TO_PLANE_0_NORM \
- tube_to_plane_normal(objPos, objNorm, objTan, p, r, s, t)
-#else
-#define VERTEX_DEFORM_TUBE_TO_PLANE_0_PREAMBLE
-#define VERTEX_DEFORM_TUBE_TO_PLANE_0_POS
-#define VERTEX_DEFORM_TUBE_TO_PLANE_0_NORM
-#endif // VERTEX_DEFORMATION_TUBE_TO_PLANE_0
-
-#if defined(_VERTEX_DEFORMATION_AXIS_ALIGN)
-#define VERTEX_DEFORM_AXIS_ALIGN_PREAMBLE \
- float3 po = _Vertex_Deformation_Axis_Align_po; \
- float3 pp = _Vertex_Deformation_Axis_Align_pp; \
- float3 r = _Vertex_Deformation_Axis_Align_r; \
- float t = _Vertex_Deformation_Axis_Align_t
-#define VERTEX_DEFORM_AXIS_ALIGN_POS \
- objPos = axis_align(objPos, po, pp, r, t)
-#define VERTEX_DEFORM_AXIS_ALIGN_NORM \
- axis_align_normal(objPos, objNorm, objTan, po, pp, r, t)
-#else
-#define VERTEX_DEFORM_AXIS_ALIGN_PREAMBLE
-#define VERTEX_DEFORM_AXIS_ALIGN_POS
-#define VERTEX_DEFORM_AXIS_ALIGN_NORM
-#endif // VERTEX_DEFORMATION_AXIS_ALIGN
-
-#if defined(_VERTEX_DEFORMATION_TUBE_TO_PLANE_1)
-#define VERTEX_DEFORM_TUBE_TO_PLANE_1_PREAMBLE \
- float3 p = _Vertex_Deformation_Tube_To_Plane_1_p; \
- float3 r = _Vertex_Deformation_Tube_To_Plane_1_r; \
- float3 s = _Vertex_Deformation_Tube_To_Plane_1_s; \
- float t = _Vertex_Deformation_Tube_To_Plane_1_t
-#define VERTEX_DEFORM_TUBE_TO_PLANE_1_POS \
- objPos = tube_to_plane(objPos, p, r, s, t)
-#define VERTEX_DEFORM_TUBE_TO_PLANE_1_NORM \
- tube_to_plane_normal(objPos, objNorm, objTan, p, r, s, t)
-#else
-#define VERTEX_DEFORM_TUBE_TO_PLANE_1_PREAMBLE
-#define VERTEX_DEFORM_TUBE_TO_PLANE_1_POS
-#define VERTEX_DEFORM_TUBE_TO_PLANE_1_NORM
-#endif // VERTEX_DEFORMATION_TUBE_TO_PLANE_1
-
-#if defined(_VERTEX_DEFORMATION_PLANE_TO_TUBE_0)
-#define VERTEX_DEFORM_PLANE_TO_TUBE_0_PREAMBLE \
- float3 p = _Vertex_Deformation_Plane_To_Tube_0_p; \
- float3 r = _Vertex_Deformation_Plane_To_Tube_0_r; \
- float3 s = _Vertex_Deformation_Plane_To_Tube_0_s; \
- float t = _Vertex_Deformation_Plane_To_Tube_0_t
-#define VERTEX_DEFORM_PLANE_TO_TUBE_0_POS \
- objPos = plane_to_tube(objPos, p, r, s, t)
-#define VERTEX_DEFORM_PLANE_TO_TUBE_0_NORM \
- plane_to_tube_normal(objPos, objNorm, objTan, p, r, s, t)
-#else
-#define VERTEX_DEFORM_PLANE_TO_TUBE_0_PREAMBLE
-#define VERTEX_DEFORM_PLANE_TO_TUBE_0_POS
-#define VERTEX_DEFORM_PLANE_TO_TUBE_0_NORM
-#endif // VERTEX_DEFORMATION_PLANE_TO_TUBE_0
-
-#if defined(_VERTEX_DEFORMATION_POINT_ALIGN_0)
-#define VERTEX_DEFORM_POINT_ALIGN_0_PREAMBLE \
- float3 po = _Vertex_Deformation_Point_Align_0_po; \
- float3 pp = _Vertex_Deformation_Point_Align_0_pp; \
- float3 r = _Vertex_Deformation_Point_Align_0_r; \
- float t = _Vertex_Deformation_Point_Align_0_t
-#define VERTEX_DEFORM_POINT_ALIGN_0_POS \
- objPos = point_align_0(objPos, po, pp, r, t)
-#define VERTEX_DEFORM_POINT_ALIGN_0_NORM \
- point_align_normal(objPos, objNorm, objTan, po, pp, r, t)
-#else
-#define VERTEX_DEFORM_POINT_ALIGN_0_PREAMBLE
-#define VERTEX_DEFORM_POINT_ALIGN_0_POS
-#define VERTEX_DEFORM_POINT_ALIGN_0_NORM
-#endif // VERTEX_DEFORMATION_POINT_ALIGN_0
-
-#if defined(_VERTEX_DEFORMATION_POINT_ALIGN_1)
-#define VERTEX_DEFORM_POINT_ALIGN_1_PREAMBLE \
- float3 po = _Vertex_Deformation_Point_Align_1_po; \
- float3 pp = _Vertex_Deformation_Point_Align_1_pp; \
- float3 r = _Vertex_Deformation_Point_Align_1_r; \
- float t = _Vertex_Deformation_Point_Align_1_t
-#define VERTEX_DEFORM_POINT_ALIGN_1_POS \
- objPos = point_align(objPos, po, pp, r, t)
-#define VERTEX_DEFORM_POINT_ALIGN_1_NORM \
- point_align_normal(objPos, objNorm, objTan, po, pp, r, t)
-#else
-#define VERTEX_DEFORM_POINT_ALIGN_1_PREAMBLE
-#define VERTEX_DEFORM_POINT_ALIGN_1_POS
-#define VERTEX_DEFORM_POINT_ALIGN_1_NORM
-#endif // VERTEX_DEFORMATION_POINT_ALIGN_1
-
-#if defined(_VERTEX_DEFORMATION_PLANE_TO_TUBE_1)
-#define VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE \
- float3 p = _Vertex_Deformation_Plane_To_Tube_1_p; \
- float3 r = _Vertex_Deformation_Plane_To_Tube_1_r; \
- float3 s = _Vertex_Deformation_Plane_To_Tube_1_s; \
- float t = _Vertex_Deformation_Plane_To_Tube_1_t
-#define VERTEX_DEFORM_PLANE_TO_TUBE_1_POS \
- objPos = plane_to_tube(objPos, p, r, s, t)
-#define VERTEX_DEFORM_PLANE_TO_TUBE_1_NORM \
- plane_to_tube_normal(objPos, objNorm, objTan, p, r, s, t)
-#else
-#define VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE
-#define VERTEX_DEFORM_PLANE_TO_TUBE_1_POS
-#define VERTEX_DEFORM_PLANE_TO_TUBE_1_NORM
-#endif // VERTEX_DEFORMATION_PLANE_TO_TUBE_1
-
-#if defined(_VERTEX_DEFORMATION_NORM_CONVERSION)
-#define VERTEX_DEFORM_NORM_CONVERSION_PREAMBLE \
- float t = _Vertex_Deformation_Norm_Conversion_t; \
- float input_k = _Vertex_Deformation_Norm_Conversion_Input_k; \
- float output_k = _Vertex_Deformation_Norm_Conversion_Output_k
-#define VERTEX_DEFORM_NORM_CONVERSION_POS \
- objPos = norm_conversion(objPos, input_k, output_k, t)
-#define VERTEX_DEFORM_NORM_CONVERSION_NORM \
- norm_conversion_normal(objPos, objNorm, objTan, input_k, output_k, t)
-#else
-#define VERTEX_DEFORM_NORM_CONVERSION_PREAMBLE
-#define VERTEX_DEFORM_NORM_CONVERSION_POS
-#define VERTEX_DEFORM_NORM_CONVERSION_NORM
-#endif // _VERTEX_DEFORMATION_NORM_CONVERSION
-
-#if defined(_VERTEX_DEFORMATION_SEAL)
-#define VERTEX_DEFORM_SEAL_PREAMBLE \
- float A = _Vertex_Deformation_Seal_A; \
- float k = _Vertex_Deformation_Seal_k; \
- float st = t * _Vertex_Deformation_Seal_t
-#define VERTEX_DEFORM_SEAL_POS \
- objPos = seal(objPos, A, k, st)
-#define VERTEX_DEFORM_SEAL_NORM \
- seal_normal(objPos, objNorm, objTan, A, k, st)
-#else
-#define VERTEX_DEFORM_SEAL_PREAMBLE
-#define VERTEX_DEFORM_SEAL_POS
-#define VERTEX_DEFORM_SEAL_NORM
-#endif // _VERTEX_DEFORMATION_SEAL
-
-#if defined(_VERTEX_DEFORMATION_SINE_WAVES)
-#define VERTEX_DEFORM_SINE_WAVES_PREAMBLE \
- float st = t * 10; \
- float3 amplitude = _Vertex_Deformation_Sine_Waves_Amplitude; \
- float3 direction = _Vertex_Deformation_Sine_Waves_Direction; \
- float3 k = _Vertex_Deformation_Sine_Waves_k; \
- float3 omega = _Vertex_Deformation_Sine_Waves_omega
-#define VERTEX_DEFORM_SINE_WAVES_POS \
- objPos = sine_wave(objPos, amplitude, direction, k, omega, st)
-#define VERTEX_DEFORM_SINE_WAVES_NORM \
- sine_wave_normal(objPos, objNorm, objTan, amplitude, direction, k, omega, st)
-#else
-#define VERTEX_DEFORM_SINE_WAVES_PREAMBLE
-#define VERTEX_DEFORM_SINE_WAVES_POS
-#define VERTEX_DEFORM_SINE_WAVES_NORM
-#endif // _VERTEX_DEFORMATION_SINE_WAVES
-
-#if defined(_VERTEX_DEFORMATION_FBM)
-#define VERTEX_DEFORM_FBM_PREAMBLE \
- float st = t; \
- float3 amplitude = _Vertex_Deformation_FBM_Amplitude; \
- float gain = _Vertex_Deformation_FBM_Gain; \
- float lacunarity = _Vertex_Deformation_FBM_Lacunarity; \
- float3 period = _Vertex_Deformation_FBM_Period; \
- float octaves = _Vertex_Deformation_FBM_Octaves; \
- float3 velocity = _Vertex_Deformation_FBM_Velocity
-#define VERTEX_DEFORM_FBM_POS \
- objPos = fbm(objPos, st, amplitude, gain, lacunarity, period, octaves, velocity)
-#define VERTEX_DEFORM_FBM_NORM \
- fbm_normal(objPos, objNorm, objTan, st, amplitude, gain, lacunarity, period, octaves, velocity)
-#else
-#define VERTEX_DEFORM_FBM_PREAMBLE
-#define VERTEX_DEFORM_FBM_POS
-#define VERTEX_DEFORM_FBM_NORM
-#endif // _VERTEX_DEFORMATION_FBM
+#define OPCODE_NONE 0
+#define OPCODE_TUBE_TO_PLANE 1
+#define OPCODE_PLANE_TO_TUBE 2
+#define OPCODE_POINT_ALIGN 3
+#define OPCODE_AXIS_ALIGN 4
+#define OPCODE_NORM_CONVERSION 5
+#define OPCODE_SEAL 6
+#define OPCODE_SINE_WAVES 7
+#define OPCODE_FBM 8
+
+#if defined(_VERTEX_DEFORMATION)
+
+void apply_tube_to_plane(inout float3 objPos, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 p = v0.xyz;
+ float3 r = v1.xyz;
+ float3 s = v2.xyz;
+ float t = f0;
+ objPos = tube_to_plane(objPos, p, r, s, t);
+}
+
+void apply_tube_to_plane_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 p = v0.xyz;
+ float3 r = v1.xyz;
+ float3 s = v2.xyz;
+ float t = f0;
+ tube_to_plane_normal(objPos, objNorm, objTan, p, r, s, t);
+}
+
+void apply_plane_to_tube(inout float3 objPos, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 p = v0.xyz;
+ float3 r = v1.xyz;
+ float3 s = v2.xyz;
+ float t = f0;
+ objPos = plane_to_tube(objPos, p, r, s, t);
+}
+
+void apply_plane_to_tube_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 p = v0.xyz;
+ float3 r = v1.xyz;
+ float3 s = v2.xyz;
+ float t = f0;
+ plane_to_tube_normal(objPos, objNorm, objTan, p, r, s, t);
+}
+
+void apply_point_align(inout float3 objPos, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 po = v0.xyz;
+ float3 pp = v1.xyz;
+ float3 r = v2.xyz;
+ float t = f0;
+ objPos = point_align(objPos, po, pp, r, t);
+}
+
+void apply_point_align_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 po = v0.xyz;
+ float3 pp = v1.xyz;
+ float3 r = v2.xyz;
+ float t = f0;
+ point_align_normal(objPos, objNorm, objTan, po, pp, r, t);
+}
+
+void apply_axis_align(inout float3 objPos, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 po = v0.xyz;
+ float3 pp = v1.xyz;
+ float3 r = v2.xyz;
+ float t = f0;
+ objPos = axis_align(objPos, po, pp, r, t);
+}
+
+void apply_axis_align_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float4 v0, float4 v1, float4 v2, float f0) {
+ float3 po = v0.xyz;
+ float3 pp = v1.xyz;
+ float3 r = v2.xyz;
+ float t = f0;
+ axis_align_normal(objPos, objNorm, objTan, po, pp, r, t);
+}
+
+void apply_norm_conversion(inout float3 objPos, float f0, float f1, float f2) {
+ float input_k = f0;
+ float output_k = f1;
+ float t = f2;
+ objPos = norm_conversion(objPos, input_k, output_k, t);
+}
+
+void apply_norm_conversion_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float f0, float f1, float f2) {
+ float input_k = f0;
+ float output_k = f1;
+ float t = f2;
+ norm_conversion_normal(objPos, objNorm, objTan, input_k, output_k, t);
+}
+
+void apply_seal(inout float3 objPos, float f0, float f1, float f2, float t) {
+ float A = f0;
+ float k = f1;
+ float st = t * f2;
+ objPos = seal(objPos, A, k, st);
+}
+
+void apply_seal_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float f0, float f1, float f2, float t) {
+ float A = f0;
+ float k = f1;
+ float st = t * f2;
+ seal_normal(objPos, objNorm, objTan, A, k, st);
+}
+
+void apply_sine_waves(inout float3 objPos, float4 v0, float4 v1, float4 v2, float4 v3, float t) {
+ float st = t * 10;
+ float3 amplitude = v0.xyz;
+ float3 direction = v1.xyz;
+ float3 k = v2.xyz;
+ float3 omega = v3.xyz;
+ objPos = sine_wave(objPos, amplitude, direction, k, omega, st);
+}
+
+void apply_sine_waves_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float4 v0, float4 v1, float4 v2, float4 v3, float t) {
+ float st = t * 10;
+ float3 amplitude = v0.xyz;
+ float3 direction = v1.xyz;
+ float3 k = v2.xyz;
+ float3 omega = v3.xyz;
+ sine_wave_normal(objPos, objNorm, objTan, amplitude, direction, k, omega, st);
+}
+
+void apply_fbm(inout float3 objPos, float4 v0, float4 v1, float4 v2, float f0, float f1, float f2, float t) {
+ float st = t;
+ float3 amplitude = v0.xyz;
+ float3 velocity = v1.xyz;
+ float3 period = v2.xyz;
+ float gain = f0;
+ float lacunarity = f1;
+ float octaves = f2;
+ objPos = fbm(objPos, st, amplitude, gain, lacunarity, period, octaves, velocity);
+}
+
+void apply_fbm_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan, float4 v0, float4 v1, float4 v2, float f0, float f1, float f2, float t) {
+ float st = t;
+ float3 amplitude = v0.xyz;
+ float3 velocity = v1.xyz;
+ float3 period = v2.xyz;
+ float gain = f0;
+ float lacunarity = f1;
+ float octaves = f2;
+ fbm_normal(objPos, objNorm, objTan, st, amplitude, gain, lacunarity, period, octaves, velocity);
+}
void deform(inout float3 objPos) {
const float t = getTime();
- // Tube to plane.
- {
- {
- VERTEX_DEFORM_TUBE_TO_PLANE_0_PREAMBLE;
- VERTEX_DEFORM_TUBE_TO_PLANE_0_POS;
- }
- {
- VERTEX_DEFORM_AXIS_ALIGN_PREAMBLE;
- VERTEX_DEFORM_AXIS_ALIGN_POS;
- }
- {
- VERTEX_DEFORM_TUBE_TO_PLANE_1_PREAMBLE;
- VERTEX_DEFORM_TUBE_TO_PLANE_1_POS;
- }
- }
- // Here we're a plane.
- {
- VERTEX_DEFORM_FBM_PREAMBLE;
- VERTEX_DEFORM_FBM_POS;
- }
- // Plane to tube.
- {
- {
- VERTEX_DEFORM_POINT_ALIGN_0_PREAMBLE;
- VERTEX_DEFORM_POINT_ALIGN_0_POS;
- }
- {
- VERTEX_DEFORM_PLANE_TO_TUBE_0_PREAMBLE;
- VERTEX_DEFORM_PLANE_TO_TUBE_0_POS;
- }
- {
- VERTEX_DEFORM_POINT_ALIGN_1_PREAMBLE;
- VERTEX_DEFORM_POINT_ALIGN_1_POS;
+
+ [loop]
+ for (int i = 0; i < 16; i++) {
+ float enabled;
+ int opcode;
+ float f0, f1, f2, f3;
+ float4 v0, v1, v2, v3;
+
+ [forcecase]
+ switch (i) {
+ case 0:
+ enabled = _Vertex_Deformation_Slot_0_Enabled;
+ opcode = _Vertex_Deformation_Slot_0_Opcode;
+ f0 = _Vertex_Deformation_Slot_0_Float_0;
+ f1 = _Vertex_Deformation_Slot_0_Float_1;
+ f2 = _Vertex_Deformation_Slot_0_Float_2;
+ f3 = _Vertex_Deformation_Slot_0_Float_3;
+ v0 = _Vertex_Deformation_Slot_0_Vector_0;
+ v1 = _Vertex_Deformation_Slot_0_Vector_1;
+ v2 = _Vertex_Deformation_Slot_0_Vector_2;
+ v3 = _Vertex_Deformation_Slot_0_Vector_3;
+ break;
+ case 1:
+ enabled = _Vertex_Deformation_Slot_1_Enabled;
+ opcode = _Vertex_Deformation_Slot_1_Opcode;
+ f0 = _Vertex_Deformation_Slot_1_Float_0;
+ f1 = _Vertex_Deformation_Slot_1_Float_1;
+ f2 = _Vertex_Deformation_Slot_1_Float_2;
+ f3 = _Vertex_Deformation_Slot_1_Float_3;
+ v0 = _Vertex_Deformation_Slot_1_Vector_0;
+ v1 = _Vertex_Deformation_Slot_1_Vector_1;
+ v2 = _Vertex_Deformation_Slot_1_Vector_2;
+ v3 = _Vertex_Deformation_Slot_1_Vector_3;
+ break;
+ case 2:
+ enabled = _Vertex_Deformation_Slot_2_Enabled;
+ opcode = _Vertex_Deformation_Slot_2_Opcode;
+ f0 = _Vertex_Deformation_Slot_2_Float_0;
+ f1 = _Vertex_Deformation_Slot_2_Float_1;
+ f2 = _Vertex_Deformation_Slot_2_Float_2;
+ f3 = _Vertex_Deformation_Slot_2_Float_3;
+ v0 = _Vertex_Deformation_Slot_2_Vector_0;
+ v1 = _Vertex_Deformation_Slot_2_Vector_1;
+ v2 = _Vertex_Deformation_Slot_2_Vector_2;
+ v3 = _Vertex_Deformation_Slot_2_Vector_3;
+ break;
+ case 3:
+ enabled = _Vertex_Deformation_Slot_3_Enabled;
+ opcode = _Vertex_Deformation_Slot_3_Opcode;
+ f0 = _Vertex_Deformation_Slot_3_Float_0;
+ f1 = _Vertex_Deformation_Slot_3_Float_1;
+ f2 = _Vertex_Deformation_Slot_3_Float_2;
+ f3 = _Vertex_Deformation_Slot_3_Float_3;
+ v0 = _Vertex_Deformation_Slot_3_Vector_0;
+ v1 = _Vertex_Deformation_Slot_3_Vector_1;
+ v2 = _Vertex_Deformation_Slot_3_Vector_2;
+ v3 = _Vertex_Deformation_Slot_3_Vector_3;
+ break;
+ case 4:
+ enabled = _Vertex_Deformation_Slot_4_Enabled;
+ opcode = _Vertex_Deformation_Slot_4_Opcode;
+ f0 = _Vertex_Deformation_Slot_4_Float_0;
+ f1 = _Vertex_Deformation_Slot_4_Float_1;
+ f2 = _Vertex_Deformation_Slot_4_Float_2;
+ f3 = _Vertex_Deformation_Slot_4_Float_3;
+ v0 = _Vertex_Deformation_Slot_4_Vector_0;
+ v1 = _Vertex_Deformation_Slot_4_Vector_1;
+ v2 = _Vertex_Deformation_Slot_4_Vector_2;
+ v3 = _Vertex_Deformation_Slot_4_Vector_3;
+ break;
+ case 5:
+ enabled = _Vertex_Deformation_Slot_5_Enabled;
+ opcode = _Vertex_Deformation_Slot_5_Opcode;
+ f0 = _Vertex_Deformation_Slot_5_Float_0;
+ f1 = _Vertex_Deformation_Slot_5_Float_1;
+ f2 = _Vertex_Deformation_Slot_5_Float_2;
+ f3 = _Vertex_Deformation_Slot_5_Float_3;
+ v0 = _Vertex_Deformation_Slot_5_Vector_0;
+ v1 = _Vertex_Deformation_Slot_5_Vector_1;
+ v2 = _Vertex_Deformation_Slot_5_Vector_2;
+ v3 = _Vertex_Deformation_Slot_5_Vector_3;
+ break;
+ case 6:
+ enabled = _Vertex_Deformation_Slot_6_Enabled;
+ opcode = _Vertex_Deformation_Slot_6_Opcode;
+ f0 = _Vertex_Deformation_Slot_6_Float_0;
+ f1 = _Vertex_Deformation_Slot_6_Float_1;
+ f2 = _Vertex_Deformation_Slot_6_Float_2;
+ f3 = _Vertex_Deformation_Slot_6_Float_3;
+ v0 = _Vertex_Deformation_Slot_6_Vector_0;
+ v1 = _Vertex_Deformation_Slot_6_Vector_1;
+ v2 = _Vertex_Deformation_Slot_6_Vector_2;
+ v3 = _Vertex_Deformation_Slot_6_Vector_3;
+ break;
+ case 7:
+ enabled = _Vertex_Deformation_Slot_7_Enabled;
+ opcode = _Vertex_Deformation_Slot_7_Opcode;
+ f0 = _Vertex_Deformation_Slot_7_Float_0;
+ f1 = _Vertex_Deformation_Slot_7_Float_1;
+ f2 = _Vertex_Deformation_Slot_7_Float_2;
+ f3 = _Vertex_Deformation_Slot_7_Float_3;
+ v0 = _Vertex_Deformation_Slot_7_Vector_0;
+ v1 = _Vertex_Deformation_Slot_7_Vector_1;
+ v2 = _Vertex_Deformation_Slot_7_Vector_2;
+ v3 = _Vertex_Deformation_Slot_7_Vector_3;
+ break;
+ case 8:
+ enabled = _Vertex_Deformation_Slot_8_Enabled;
+ opcode = _Vertex_Deformation_Slot_8_Opcode;
+ f0 = _Vertex_Deformation_Slot_8_Float_0;
+ f1 = _Vertex_Deformation_Slot_8_Float_1;
+ f2 = _Vertex_Deformation_Slot_8_Float_2;
+ f3 = _Vertex_Deformation_Slot_8_Float_3;
+ v0 = _Vertex_Deformation_Slot_8_Vector_0;
+ v1 = _Vertex_Deformation_Slot_8_Vector_1;
+ v2 = _Vertex_Deformation_Slot_8_Vector_2;
+ v3 = _Vertex_Deformation_Slot_8_Vector_3;
+ break;
+ case 9:
+ enabled = _Vertex_Deformation_Slot_9_Enabled;
+ opcode = _Vertex_Deformation_Slot_9_Opcode;
+ f0 = _Vertex_Deformation_Slot_9_Float_0;
+ f1 = _Vertex_Deformation_Slot_9_Float_1;
+ f2 = _Vertex_Deformation_Slot_9_Float_2;
+ f3 = _Vertex_Deformation_Slot_9_Float_3;
+ v0 = _Vertex_Deformation_Slot_9_Vector_0;
+ v1 = _Vertex_Deformation_Slot_9_Vector_1;
+ v2 = _Vertex_Deformation_Slot_9_Vector_2;
+ v3 = _Vertex_Deformation_Slot_9_Vector_3;
+ break;
+ case 10:
+ enabled = _Vertex_Deformation_Slot_10_Enabled;
+ opcode = _Vertex_Deformation_Slot_10_Opcode;
+ f0 = _Vertex_Deformation_Slot_10_Float_0;
+ f1 = _Vertex_Deformation_Slot_10_Float_1;
+ f2 = _Vertex_Deformation_Slot_10_Float_2;
+ f3 = _Vertex_Deformation_Slot_10_Float_3;
+ v0 = _Vertex_Deformation_Slot_10_Vector_0;
+ v1 = _Vertex_Deformation_Slot_10_Vector_1;
+ v2 = _Vertex_Deformation_Slot_10_Vector_2;
+ v3 = _Vertex_Deformation_Slot_10_Vector_3;
+ break;
+ case 11:
+ enabled = _Vertex_Deformation_Slot_11_Enabled;
+ opcode = _Vertex_Deformation_Slot_11_Opcode;
+ f0 = _Vertex_Deformation_Slot_11_Float_0;
+ f1 = _Vertex_Deformation_Slot_11_Float_1;
+ f2 = _Vertex_Deformation_Slot_11_Float_2;
+ f3 = _Vertex_Deformation_Slot_11_Float_3;
+ v0 = _Vertex_Deformation_Slot_11_Vector_0;
+ v1 = _Vertex_Deformation_Slot_11_Vector_1;
+ v2 = _Vertex_Deformation_Slot_11_Vector_2;
+ v3 = _Vertex_Deformation_Slot_11_Vector_3;
+ break;
+ case 12:
+ enabled = _Vertex_Deformation_Slot_12_Enabled;
+ opcode = _Vertex_Deformation_Slot_12_Opcode;
+ f0 = _Vertex_Deformation_Slot_12_Float_0;
+ f1 = _Vertex_Deformation_Slot_12_Float_1;
+ f2 = _Vertex_Deformation_Slot_12_Float_2;
+ f3 = _Vertex_Deformation_Slot_12_Float_3;
+ v0 = _Vertex_Deformation_Slot_12_Vector_0;
+ v1 = _Vertex_Deformation_Slot_12_Vector_1;
+ v2 = _Vertex_Deformation_Slot_12_Vector_2;
+ v3 = _Vertex_Deformation_Slot_12_Vector_3;
+ break;
+ case 13:
+ enabled = _Vertex_Deformation_Slot_13_Enabled;
+ opcode = _Vertex_Deformation_Slot_13_Opcode;
+ f0 = _Vertex_Deformation_Slot_13_Float_0;
+ f1 = _Vertex_Deformation_Slot_13_Float_1;
+ f2 = _Vertex_Deformation_Slot_13_Float_2;
+ f3 = _Vertex_Deformation_Slot_13_Float_3;
+ v0 = _Vertex_Deformation_Slot_13_Vector_0;
+ v1 = _Vertex_Deformation_Slot_13_Vector_1;
+ v2 = _Vertex_Deformation_Slot_13_Vector_2;
+ v3 = _Vertex_Deformation_Slot_13_Vector_3;
+ break;
+ case 14:
+ enabled = _Vertex_Deformation_Slot_14_Enabled;
+ opcode = _Vertex_Deformation_Slot_14_Opcode;
+ f0 = _Vertex_Deformation_Slot_14_Float_0;
+ f1 = _Vertex_Deformation_Slot_14_Float_1;
+ f2 = _Vertex_Deformation_Slot_14_Float_2;
+ f3 = _Vertex_Deformation_Slot_14_Float_3;
+ v0 = _Vertex_Deformation_Slot_14_Vector_0;
+ v1 = _Vertex_Deformation_Slot_14_Vector_1;
+ v2 = _Vertex_Deformation_Slot_14_Vector_2;
+ v3 = _Vertex_Deformation_Slot_14_Vector_3;
+ break;
+ case 15:
+ enabled = _Vertex_Deformation_Slot_15_Enabled;
+ opcode = _Vertex_Deformation_Slot_15_Opcode;
+ f0 = _Vertex_Deformation_Slot_15_Float_0;
+ f1 = _Vertex_Deformation_Slot_15_Float_1;
+ f2 = _Vertex_Deformation_Slot_15_Float_2;
+ f3 = _Vertex_Deformation_Slot_15_Float_3;
+ v0 = _Vertex_Deformation_Slot_15_Vector_0;
+ v1 = _Vertex_Deformation_Slot_15_Vector_1;
+ v2 = _Vertex_Deformation_Slot_15_Vector_2;
+ v3 = _Vertex_Deformation_Slot_15_Vector_3;
+ break;
}
- {
- VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE;
- VERTEX_DEFORM_PLANE_TO_TUBE_1_POS;
+
+ if (enabled > 0.5) {
+ switch (opcode) {
+ case OPCODE_TUBE_TO_PLANE:
+ apply_tube_to_plane(objPos, v0, v1, v2, f0);
+ break;
+ case OPCODE_PLANE_TO_TUBE:
+ apply_plane_to_tube(objPos, v0, v1, v2, f0);
+ break;
+ case OPCODE_POINT_ALIGN:
+ apply_point_align(objPos, v0, v1, v2, f0);
+ break;
+ case OPCODE_AXIS_ALIGN:
+ apply_axis_align(objPos, v0, v1, v2, f0);
+ break;
+ case OPCODE_NORM_CONVERSION:
+ apply_norm_conversion(objPos, f0, f1, f2);
+ break;
+ case OPCODE_SEAL:
+ apply_seal(objPos, f0, f1, f2, t);
+ break;
+ case OPCODE_SINE_WAVES:
+ apply_sine_waves(objPos, v0, v1, v2, v3, t);
+ break;
+ case OPCODE_FBM:
+ apply_fbm(objPos, v0, v1, v2, f0, f1, f2, t);
+ break;
+ }
}
}
- {
- VERTEX_DEFORM_NORM_CONVERSION_PREAMBLE;
- VERTEX_DEFORM_NORM_CONVERSION_POS;
- }
- {
- VERTEX_DEFORM_SEAL_PREAMBLE;
- VERTEX_DEFORM_SEAL_POS;
- }
- {
- VERTEX_DEFORM_SINE_WAVES_PREAMBLE;
- VERTEX_DEFORM_SINE_WAVES_POS;
- }
}
void deform_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan) {
const float t = getTime();
- // Tube to plane.
- {
- {
- VERTEX_DEFORM_TUBE_TO_PLANE_0_PREAMBLE;
- VERTEX_DEFORM_TUBE_TO_PLANE_0_NORM;
- }
- {
- VERTEX_DEFORM_AXIS_ALIGN_PREAMBLE;
- VERTEX_DEFORM_AXIS_ALIGN_NORM;
- }
- {
- VERTEX_DEFORM_TUBE_TO_PLANE_1_PREAMBLE;
- VERTEX_DEFORM_TUBE_TO_PLANE_1_NORM;
- }
- }
- // Here we're a plane.
- {
- VERTEX_DEFORM_FBM_PREAMBLE;
- VERTEX_DEFORM_FBM_NORM;
- }
- // Plane to tube.
- {
- {
- VERTEX_DEFORM_POINT_ALIGN_0_PREAMBLE;
- VERTEX_DEFORM_POINT_ALIGN_0_NORM;
- }
- {
- VERTEX_DEFORM_PLANE_TO_TUBE_0_PREAMBLE;
- VERTEX_DEFORM_PLANE_TO_TUBE_0_NORM;
- }
- {
- VERTEX_DEFORM_POINT_ALIGN_1_PREAMBLE;
- VERTEX_DEFORM_POINT_ALIGN_1_NORM;
+
+ [loop]
+ for (int i = 0; i < 16; i++) {
+ float enabled;
+ int opcode;
+ float f0, f1, f2, f3;
+ float4 v0, v1, v2, v3;
+
+ [forcecase]
+ switch (i) {
+ case 0:
+ enabled = _Vertex_Deformation_Slot_0_Enabled;
+ opcode = _Vertex_Deformation_Slot_0_Opcode;
+ f0 = _Vertex_Deformation_Slot_0_Float_0;
+ f1 = _Vertex_Deformation_Slot_0_Float_1;
+ f2 = _Vertex_Deformation_Slot_0_Float_2;
+ f3 = _Vertex_Deformation_Slot_0_Float_3;
+ v0 = _Vertex_Deformation_Slot_0_Vector_0;
+ v1 = _Vertex_Deformation_Slot_0_Vector_1;
+ v2 = _Vertex_Deformation_Slot_0_Vector_2;
+ v3 = _Vertex_Deformation_Slot_0_Vector_3;
+ break;
+ case 1:
+ enabled = _Vertex_Deformation_Slot_1_Enabled;
+ opcode = _Vertex_Deformation_Slot_1_Opcode;
+ f0 = _Vertex_Deformation_Slot_1_Float_0;
+ f1 = _Vertex_Deformation_Slot_1_Float_1;
+ f2 = _Vertex_Deformation_Slot_1_Float_2;
+ f3 = _Vertex_Deformation_Slot_1_Float_3;
+ v0 = _Vertex_Deformation_Slot_1_Vector_0;
+ v1 = _Vertex_Deformation_Slot_1_Vector_1;
+ v2 = _Vertex_Deformation_Slot_1_Vector_2;
+ v3 = _Vertex_Deformation_Slot_1_Vector_3;
+ break;
+ case 2:
+ enabled = _Vertex_Deformation_Slot_2_Enabled;
+ opcode = _Vertex_Deformation_Slot_2_Opcode;
+ f0 = _Vertex_Deformation_Slot_2_Float_0;
+ f1 = _Vertex_Deformation_Slot_2_Float_1;
+ f2 = _Vertex_Deformation_Slot_2_Float_2;
+ f3 = _Vertex_Deformation_Slot_2_Float_3;
+ v0 = _Vertex_Deformation_Slot_2_Vector_0;
+ v1 = _Vertex_Deformation_Slot_2_Vector_1;
+ v2 = _Vertex_Deformation_Slot_2_Vector_2;
+ v3 = _Vertex_Deformation_Slot_2_Vector_3;
+ break;
+ case 3:
+ enabled = _Vertex_Deformation_Slot_3_Enabled;
+ opcode = _Vertex_Deformation_Slot_3_Opcode;
+ f0 = _Vertex_Deformation_Slot_3_Float_0;
+ f1 = _Vertex_Deformation_Slot_3_Float_1;
+ f2 = _Vertex_Deformation_Slot_3_Float_2;
+ f3 = _Vertex_Deformation_Slot_3_Float_3;
+ v0 = _Vertex_Deformation_Slot_3_Vector_0;
+ v1 = _Vertex_Deformation_Slot_3_Vector_1;
+ v2 = _Vertex_Deformation_Slot_3_Vector_2;
+ v3 = _Vertex_Deformation_Slot_3_Vector_3;
+ break;
+ case 4:
+ enabled = _Vertex_Deformation_Slot_4_Enabled;
+ opcode = _Vertex_Deformation_Slot_4_Opcode;
+ f0 = _Vertex_Deformation_Slot_4_Float_0;
+ f1 = _Vertex_Deformation_Slot_4_Float_1;
+ f2 = _Vertex_Deformation_Slot_4_Float_2;
+ f3 = _Vertex_Deformation_Slot_4_Float_3;
+ v0 = _Vertex_Deformation_Slot_4_Vector_0;
+ v1 = _Vertex_Deformation_Slot_4_Vector_1;
+ v2 = _Vertex_Deformation_Slot_4_Vector_2;
+ v3 = _Vertex_Deformation_Slot_4_Vector_3;
+ break;
+ case 5:
+ enabled = _Vertex_Deformation_Slot_5_Enabled;
+ opcode = _Vertex_Deformation_Slot_5_Opcode;
+ f0 = _Vertex_Deformation_Slot_5_Float_0;
+ f1 = _Vertex_Deformation_Slot_5_Float_1;
+ f2 = _Vertex_Deformation_Slot_5_Float_2;
+ f3 = _Vertex_Deformation_Slot_5_Float_3;
+ v0 = _Vertex_Deformation_Slot_5_Vector_0;
+ v1 = _Vertex_Deformation_Slot_5_Vector_1;
+ v2 = _Vertex_Deformation_Slot_5_Vector_2;
+ v3 = _Vertex_Deformation_Slot_5_Vector_3;
+ break;
+ case 6:
+ enabled = _Vertex_Deformation_Slot_6_Enabled;
+ opcode = _Vertex_Deformation_Slot_6_Opcode;
+ f0 = _Vertex_Deformation_Slot_6_Float_0;
+ f1 = _Vertex_Deformation_Slot_6_Float_1;
+ f2 = _Vertex_Deformation_Slot_6_Float_2;
+ f3 = _Vertex_Deformation_Slot_6_Float_3;
+ v0 = _Vertex_Deformation_Slot_6_Vector_0;
+ v1 = _Vertex_Deformation_Slot_6_Vector_1;
+ v2 = _Vertex_Deformation_Slot_6_Vector_2;
+ v3 = _Vertex_Deformation_Slot_6_Vector_3;
+ break;
+ case 7:
+ enabled = _Vertex_Deformation_Slot_7_Enabled;
+ opcode = _Vertex_Deformation_Slot_7_Opcode;
+ f0 = _Vertex_Deformation_Slot_7_Float_0;
+ f1 = _Vertex_Deformation_Slot_7_Float_1;
+ f2 = _Vertex_Deformation_Slot_7_Float_2;
+ f3 = _Vertex_Deformation_Slot_7_Float_3;
+ v0 = _Vertex_Deformation_Slot_7_Vector_0;
+ v1 = _Vertex_Deformation_Slot_7_Vector_1;
+ v2 = _Vertex_Deformation_Slot_7_Vector_2;
+ v3 = _Vertex_Deformation_Slot_7_Vector_3;
+ break;
+ case 8:
+ enabled = _Vertex_Deformation_Slot_8_Enabled;
+ opcode = _Vertex_Deformation_Slot_8_Opcode;
+ f0 = _Vertex_Deformation_Slot_8_Float_0;
+ f1 = _Vertex_Deformation_Slot_8_Float_1;
+ f2 = _Vertex_Deformation_Slot_8_Float_2;
+ f3 = _Vertex_Deformation_Slot_8_Float_3;
+ v0 = _Vertex_Deformation_Slot_8_Vector_0;
+ v1 = _Vertex_Deformation_Slot_8_Vector_1;
+ v2 = _Vertex_Deformation_Slot_8_Vector_2;
+ v3 = _Vertex_Deformation_Slot_8_Vector_3;
+ break;
+ case 9:
+ enabled = _Vertex_Deformation_Slot_9_Enabled;
+ opcode = _Vertex_Deformation_Slot_9_Opcode;
+ f0 = _Vertex_Deformation_Slot_9_Float_0;
+ f1 = _Vertex_Deformation_Slot_9_Float_1;
+ f2 = _Vertex_Deformation_Slot_9_Float_2;
+ f3 = _Vertex_Deformation_Slot_9_Float_3;
+ v0 = _Vertex_Deformation_Slot_9_Vector_0;
+ v1 = _Vertex_Deformation_Slot_9_Vector_1;
+ v2 = _Vertex_Deformation_Slot_9_Vector_2;
+ v3 = _Vertex_Deformation_Slot_9_Vector_3;
+ break;
+ case 10:
+ enabled = _Vertex_Deformation_Slot_10_Enabled;
+ opcode = _Vertex_Deformation_Slot_10_Opcode;
+ f0 = _Vertex_Deformation_Slot_10_Float_0;
+ f1 = _Vertex_Deformation_Slot_10_Float_1;
+ f2 = _Vertex_Deformation_Slot_10_Float_2;
+ f3 = _Vertex_Deformation_Slot_10_Float_3;
+ v0 = _Vertex_Deformation_Slot_10_Vector_0;
+ v1 = _Vertex_Deformation_Slot_10_Vector_1;
+ v2 = _Vertex_Deformation_Slot_10_Vector_2;
+ v3 = _Vertex_Deformation_Slot_10_Vector_3;
+ break;
+ case 11:
+ enabled = _Vertex_Deformation_Slot_11_Enabled;
+ opcode = _Vertex_Deformation_Slot_11_Opcode;
+ f0 = _Vertex_Deformation_Slot_11_Float_0;
+ f1 = _Vertex_Deformation_Slot_11_Float_1;
+ f2 = _Vertex_Deformation_Slot_11_Float_2;
+ f3 = _Vertex_Deformation_Slot_11_Float_3;
+ v0 = _Vertex_Deformation_Slot_11_Vector_0;
+ v1 = _Vertex_Deformation_Slot_11_Vector_1;
+ v2 = _Vertex_Deformation_Slot_11_Vector_2;
+ v3 = _Vertex_Deformation_Slot_11_Vector_3;
+ break;
+ case 12:
+ enabled = _Vertex_Deformation_Slot_12_Enabled;
+ opcode = _Vertex_Deformation_Slot_12_Opcode;
+ f0 = _Vertex_Deformation_Slot_12_Float_0;
+ f1 = _Vertex_Deformation_Slot_12_Float_1;
+ f2 = _Vertex_Deformation_Slot_12_Float_2;
+ f3 = _Vertex_Deformation_Slot_12_Float_3;
+ v0 = _Vertex_Deformation_Slot_12_Vector_0;
+ v1 = _Vertex_Deformation_Slot_12_Vector_1;
+ v2 = _Vertex_Deformation_Slot_12_Vector_2;
+ v3 = _Vertex_Deformation_Slot_12_Vector_3;
+ break;
+ case 13:
+ enabled = _Vertex_Deformation_Slot_13_Enabled;
+ opcode = _Vertex_Deformation_Slot_13_Opcode;
+ f0 = _Vertex_Deformation_Slot_13_Float_0;
+ f1 = _Vertex_Deformation_Slot_13_Float_1;
+ f2 = _Vertex_Deformation_Slot_13_Float_2;
+ f3 = _Vertex_Deformation_Slot_13_Float_3;
+ v0 = _Vertex_Deformation_Slot_13_Vector_0;
+ v1 = _Vertex_Deformation_Slot_13_Vector_1;
+ v2 = _Vertex_Deformation_Slot_13_Vector_2;
+ v3 = _Vertex_Deformation_Slot_13_Vector_3;
+ break;
+ case 14:
+ enabled = _Vertex_Deformation_Slot_14_Enabled;
+ opcode = _Vertex_Deformation_Slot_14_Opcode;
+ f0 = _Vertex_Deformation_Slot_14_Float_0;
+ f1 = _Vertex_Deformation_Slot_14_Float_1;
+ f2 = _Vertex_Deformation_Slot_14_Float_2;
+ f3 = _Vertex_Deformation_Slot_14_Float_3;
+ v0 = _Vertex_Deformation_Slot_14_Vector_0;
+ v1 = _Vertex_Deformation_Slot_14_Vector_1;
+ v2 = _Vertex_Deformation_Slot_14_Vector_2;
+ v3 = _Vertex_Deformation_Slot_14_Vector_3;
+ break;
+ case 15:
+ enabled = _Vertex_Deformation_Slot_15_Enabled;
+ opcode = _Vertex_Deformation_Slot_15_Opcode;
+ f0 = _Vertex_Deformation_Slot_15_Float_0;
+ f1 = _Vertex_Deformation_Slot_15_Float_1;
+ f2 = _Vertex_Deformation_Slot_15_Float_2;
+ f3 = _Vertex_Deformation_Slot_15_Float_3;
+ v0 = _Vertex_Deformation_Slot_15_Vector_0;
+ v1 = _Vertex_Deformation_Slot_15_Vector_1;
+ v2 = _Vertex_Deformation_Slot_15_Vector_2;
+ v3 = _Vertex_Deformation_Slot_15_Vector_3;
+ break;
}
- {
- VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE;
- VERTEX_DEFORM_PLANE_TO_TUBE_1_NORM;
+
+ [branch]
+ if (enabled > 0.5) {
+ [forcecase]
+ switch (opcode) {
+ case OPCODE_TUBE_TO_PLANE:
+ apply_tube_to_plane_normal(objPos, objNorm, objTan, v0, v1, v2, f0);
+ break;
+ case OPCODE_PLANE_TO_TUBE:
+ apply_plane_to_tube_normal(objPos, objNorm, objTan, v0, v1, v2, f0);
+ break;
+ case OPCODE_POINT_ALIGN:
+ apply_point_align_normal(objPos, objNorm, objTan, v0, v1, v2, f0);
+ break;
+ case OPCODE_AXIS_ALIGN:
+ apply_axis_align_normal(objPos, objNorm, objTan, v0, v1, v2, f0);
+ break;
+ case OPCODE_NORM_CONVERSION:
+ apply_norm_conversion_normal(objPos, objNorm, objTan, f0, f1, f2);
+ break;
+ case OPCODE_SEAL:
+ apply_seal_normal(objPos, objNorm, objTan, f0, f1, f2, t);
+ break;
+ case OPCODE_SINE_WAVES:
+ apply_sine_waves_normal(objPos, objNorm, objTan, v0, v1, v2, v3, t);
+ break;
+ case OPCODE_FBM:
+ apply_fbm_normal(objPos, objNorm, objTan, v0, v1, v2, f0, f1, f2, t);
+ break;
+ }
}
}
- {
- VERTEX_DEFORM_NORM_CONVERSION_PREAMBLE;
- VERTEX_DEFORM_NORM_CONVERSION_NORM;
- }
- {
- VERTEX_DEFORM_SEAL_PREAMBLE;
- VERTEX_DEFORM_SEAL_NORM;
- }
- {
- VERTEX_DEFORM_SINE_WAVES_PREAMBLE;
- VERTEX_DEFORM_SINE_WAVES_NORM;
- }
}
+#else
+
+void deform(inout float3 objPos) {
+}
+
+void deform_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTan) {
+}
+
+#endif // _VERTEX_DEFORMATION
+
void propagateObjPos(inout v2f i) {
i.worldPos = mul(unity_ObjectToWorld, float4(i.objPos, 1));
i.pos = UnityObjectToClipPos(i.objPos);