diff options
| author | yum <yum.food.vr@gmail.com> | 2025-12-17 16:48:23 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-12-17 16:48:23 -0800 |
| commit | 32adb54e347faa86c63639a102930fe874808e39 (patch) | |
| tree | fc06980b77b6ced2a85f016996df92522335670e /vertex.cginc | |
| parent | 3fa58d15452657fdf28ccecd4a87332e9652c9fa (diff) | |
add "axis align" feature to fix distortion after unbending the tube
Diffstat (limited to 'vertex.cginc')
| -rw-r--r-- | vertex.cginc | 24 |
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; } |
