From df8aa8f2b59bad2269f9228d5ed25e7454ca3971 Mon Sep 17 00:00:00 2001 From: yum Date: Wed, 1 Jan 2025 17:42:11 -0800 Subject: 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 --- iq_sdf.cginc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'iq_sdf.cginc') 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; -- cgit v1.2.3