summaryrefslogtreecommitdiffstats
path: root/vertex.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2026-01-13 19:33:51 -0800
committeryum <yum.food.vr@gmail.com>2026-01-13 19:33:51 -0800
commit8c3a05445f529c10ebbf5bfdc0eb220fe95c558c (patch)
treecd15a6589e819f9a75de214335cda2bdf7492cab /vertex.cginc
parentb0982529d9e3d549106edd80a3e1246f3fb8cd2c (diff)
Fold: add hemi octahedron to plane operator
Diffstat (limited to 'vertex.cginc')
-rw-r--r--vertex.cginc23
1 files changed, 23 insertions, 0 deletions
diff --git a/vertex.cginc b/vertex.cginc
index e59813c..77412a9 100644
--- a/vertex.cginc
+++ b/vertex.cginc
@@ -14,6 +14,7 @@
#define OPCODE_SINE_WAVES 7
#define OPCODE_FBM 8
#define OPCODE_PLANE_TO_HEMI_OCTAHEDRON 9
+#define OPCODE_HEMI_OCTAHEDRON_TO_PLANE 10
#if defined(_VERTEX_DEFORMATION)
@@ -165,6 +166,22 @@ void apply_plane_to_hemi_octahedron_normal(inout float3 objPos, inout float3 obj
plane_to_hemi_octahedron_normal(objPos, objNorm, objTan, p, r, s, t);
}
+void apply_hemi_octahedron_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 = hemi_octahedron_to_plane(objPos, p, r, s, t);
+}
+
+void apply_hemi_octahedron_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;
+ hemi_octahedron_to_plane_normal(objPos, objNorm, objTan, p, r, s, t);
+}
+
void deform(inout float3 objPos) {
const float t = getTime();
@@ -400,6 +417,9 @@ void deform(inout float3 objPos) {
case OPCODE_PLANE_TO_HEMI_OCTAHEDRON:
apply_plane_to_hemi_octahedron(objPos, v0, v1, v2, f0);
break;
+ case OPCODE_HEMI_OCTAHEDRON_TO_PLANE:
+ apply_hemi_octahedron_to_plane(objPos, v0, v1, v2, f0);
+ break;
}
}
}
@@ -642,6 +662,9 @@ void deform_normal(inout float3 objPos, inout float3 objNorm, inout float3 objTa
case OPCODE_PLANE_TO_HEMI_OCTAHEDRON:
apply_plane_to_hemi_octahedron_normal(objPos, objNorm, objTan, v0, v1, v2, f0);
break;
+ case OPCODE_HEMI_OCTAHEDRON_TO_PLANE:
+ apply_hemi_octahedron_to_plane_normal(objPos, objNorm, objTan, v0, v1, v2, f0);
+ break;
}
}
}