summaryrefslogtreecommitdiffstats
path: root/iq_sdf.cginc
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2025-01-01 17:42:11 -0800
committeryum <yum.food.vr@gmail.com>2025-01-01 17:42:11 -0800
commitdf8aa8f2b59bad2269f9228d5ed25e7454ca3971 (patch)
tree9ae33b187458a2c5e5245c65208aad68a526ee4b /iq_sdf.cginc
parent4880e4125f529496a48269eda545ca006db17646 (diff)
More work on downstairs 2 gimmicks
* Use float param to select which gimmick to show * Add colors & domain warping to gimmick 2 * Also optimize it. Colors let us avoid 4-fold neighbor check fanout * Add rough/unoptimized version of gimmick 3
Diffstat (limited to 'iq_sdf.cginc')
-rw-r--r--iq_sdf.cginc18
1 files changed, 18 insertions, 0 deletions
diff --git a/iq_sdf.cginc b/iq_sdf.cginc
index fa5f2c5..4f5608e 100644
--- a/iq_sdf.cginc
+++ b/iq_sdf.cginc
@@ -114,6 +114,24 @@ float distance_from_capped_cylinder(float3 p, float h, float r)
return min(max(d.x,d.y),0.0) + length(max(d,0.0));
}
+float distance_from_hex_prism(float3 p, float2 h)
+{
+ float3 q = abs(p);
+
+ const float3 k = float3(-0.8660254, 0.5, 0.57735);
+ p = abs(p);
+ p.xy -= 2.0*min(dot(k.xy, p.xy), 0.0)*k.xy;
+ float2 d = float2(
+ length(p.xy - float2(clamp(p.x, -k.z*h.x, k.z*h.x), h.x))*sign(p.y - h.x),
+ p.z-h.y );
+ return min(max(d.x,d.y),0.0) + length(max(d,0.0));
+}
+/*
+float sdHexPrism( vec3 p, vec2 h )
+{
+}
+*/
+
float3 op_rep(in float3 p, in float3 c)
{
return glsl_mod(p+0.5*c,c)-0.5*c;