summaryrefslogtreecommitdiffstats
path: root/vertex.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-12-17 16:48:23 -0800
committeryum <yum.food.vr@gmail.com>2025-12-17 16:48:23 -0800
commit32adb54e347faa86c63639a102930fe874808e39 (patch)
treefc06980b77b6ced2a85f016996df92522335670e /vertex.cginc
parent3fa58d15452657fdf28ccecd4a87332e9652c9fa (diff)
add "axis align" feature to fix distortion after unbending the tube
Diffstat (limited to 'vertex.cginc')
-rw-r--r--vertex.cginc24
1 files changed, 24 insertions, 0 deletions
diff --git a/vertex.cginc b/vertex.cginc
index 3d87f35..67565d9 100644
--- a/vertex.cginc
+++ b/vertex.cginc
@@ -22,6 +22,22 @@
#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; \
@@ -143,6 +159,10 @@ void deform(inout float3 objPos) {
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;
}
@@ -179,6 +199,10 @@ void deform_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTa
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;
}