diff options
author | pommicket <pommicket@gmail.com> | 2022-12-21 15:27:39 -0500 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2022-12-21 15:27:39 -0500 |
commit | 49cfde2fb9fca47c3eab73f029fe0a2b9c913544 (patch) | |
tree | 5a1d37075b37ffa95380dbe982b04a323c5e7b1a /src/fshader_common.glsl | |
parent | 1bc45db77e3d1aaf6c620248b8e598cdc212112f (diff) |
more basic functions
Diffstat (limited to 'src/fshader_common.glsl')
-rw-r--r-- | src/fshader_common.glsl | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/fshader_common.glsl b/src/fshader_common.glsl index 558b20f..5bd4a7a 100644 --- a/src/fshader_common.glsl +++ b/src/fshader_common.glsl @@ -6,6 +6,7 @@ float smooth_min(float a, float b, float k) { } // thanks to https://iquilezles.org/articles/distfunctions/ + float sdf_box_frame(vec3 p, vec3 b, float e) { p = abs(p)-b; vec3 q = abs(p+e)-e; @@ -19,3 +20,18 @@ float sdf_torus(vec3 p, vec2 t) { vec2 q = vec2(length(p.xy)-t.x,p.z); return length(q)-t.y; } + +float sdf_tri_prism(vec3 p, vec2 h) { + vec3 q = abs(p); + return max(q.z-h.y,max(q.x*0.866025+p.y*0.5,-p.y)-h.x*0.5); +} + +float sdf_vertical_line_segment(vec3 p, float h) { + p.y -= clamp(p.y, 0.0, h); + return length(p); +} + +float sdf_cylinder(vec3 p, float h, float r) { + vec2 d = abs(vec2(length(p.xz),p.y)) - vec2(r,h); + return min(max(d.x,d.y),0.0) + length(max(d,0.0)); +} |