diff options
| author | yum <yum.food.vr@gmail.com> | 2025-01-01 17:42:11 -0800 |
|---|---|---|
| committer | yum <yum.food.vr@gmail.com> | 2025-01-01 17:42:11 -0800 |
| commit | df8aa8f2b59bad2269f9228d5ed25e7454ca3971 (patch) | |
| tree | 9ae33b187458a2c5e5245c65208aad68a526ee4b /iq_sdf.cginc | |
| parent | 4880e4125f529496a48269eda545ca006db17646 (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.cginc | 18 |
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; |
