summaryrefslogtreecommitdiffstats
path: root/vertex.cginc
diff options
context:
space:
mode:
Diffstat (limited to 'vertex.cginc')
-rw-r--r--vertex.cginc98
1 files changed, 64 insertions, 34 deletions
diff --git a/vertex.cginc b/vertex.cginc
index 9a1ed2f..acc6d60 100644
--- a/vertex.cginc
+++ b/vertex.cginc
@@ -70,21 +70,37 @@
#define VERTEX_DEFORM_PLANE_TO_TUBE_0_NORM
#endif // VERTEX_DEFORMATION_PLANE_TO_TUBE_0
-#if defined(_VERTEX_DEFORMATION_POINT_ALIGN)
-#define VERTEX_DEFORM_POINT_ALIGN_PREAMBLE \
- float3 po = _Vertex_Deformation_Point_Align_po; \
- float3 pp = _Vertex_Deformation_Point_Align_pp; \
- float3 r = _Vertex_Deformation_Point_Align_r; \
- float t = _Vertex_Deformation_Point_Align_t
-#define VERTEX_DEFORM_POINT_ALIGN_POS \
+#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_NORM \
+#define VERTEX_DEFORM_POINT_ALIGN_1_NORM \
point_align_normal(objPos, objNorm, objTan, po, pp, r, t)
#else
-#define VERTEX_DEFORM_POINT_ALIGN_PREAMBLE
-#define VERTEX_DEFORM_POINT_ALIGN_POS
-#define VERTEX_DEFORM_POINT_ALIGN_NORM
-#endif // VERTEX_DEFORMATION_POINT_ALIGN
+#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 \
@@ -193,12 +209,16 @@ void deform(inout float3 objPos) {
// 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_PREAMBLE;
- VERTEX_DEFORM_POINT_ALIGN_POS;
+ VERTEX_DEFORM_POINT_ALIGN_1_PREAMBLE;
+ VERTEX_DEFORM_POINT_ALIGN_1_POS;
}
{
VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE;
@@ -221,34 +241,44 @@ void deform(inout float3 objPos) {
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;
+ {
+ 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_PLANE_TO_TUBE_0_PREAMBLE;
- VERTEX_DEFORM_PLANE_TO_TUBE_0_NORM;
- }
- {
- VERTEX_DEFORM_POINT_ALIGN_PREAMBLE;
- VERTEX_DEFORM_POINT_ALIGN_NORM;
- }
- {
- VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE;
- VERTEX_DEFORM_PLANE_TO_TUBE_1_NORM;
+ {
+ 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;
+ }
+ {
+ VERTEX_DEFORM_PLANE_TO_TUBE_1_PREAMBLE;
+ VERTEX_DEFORM_PLANE_TO_TUBE_1_NORM;
+ }
}
{
VERTEX_DEFORM_NORM_CONVERSION_PREAMBLE;