summaryrefslogtreecommitdiff
path: root/src/fshader_common.glsl
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-12-21 15:27:39 -0500
committerpommicket <pommicket@gmail.com>2022-12-21 15:27:39 -0500
commit49cfde2fb9fca47c3eab73f029fe0a2b9c913544 (patch)
tree5a1d37075b37ffa95380dbe982b04a323c5e7b1a /src/fshader_common.glsl
parent1bc45db77e3d1aaf6c620248b8e598cdc212112f (diff)
more basic functions
Diffstat (limited to 'src/fshader_common.glsl')
-rw-r--r--src/fshader_common.glsl16
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));
+}