summaryrefslogtreecommitdiff
path: root/src/fshader_common.glsl
diff options
context:
space:
mode:
authorpommicket <pommicket@gmail.com>2022-12-17 17:44:05 -0500
committerpommicket <pommicket@gmail.com>2022-12-17 17:44:05 -0500
commita9666d1a34c25999b14d7ab345648d7066322035 (patch)
tree0216447b19cdd5b83d95a7ba766e4a27acc91938 /src/fshader_common.glsl
parent94a696ec0c97c6b622849ba6e0d3c0e5df599f88 (diff)
Programs
Diffstat (limited to 'src/fshader_common.glsl')
-rw-r--r--src/fshader_common.glsl21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/fshader_common.glsl b/src/fshader_common.glsl
new file mode 100644
index 0000000..558b20f
--- /dev/null
+++ b/src/fshader_common.glsl
@@ -0,0 +1,21 @@
+
+float smooth_min(float a, float b, float k) {
+ k = clamp(k, 0.0, 1.0);
+ float h = max(k-abs(a-b), 0.0)/k;
+ return min(a, b) - h*h*h*k*(1.0/6.0);
+}
+
+// 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;
+ return min(min(
+ length(max(vec3(p.x,q.y,q.z),0.0))+min(max(p.x,max(q.y,q.z)),0.0),
+ length(max(vec3(q.x,p.y,q.z),0.0))+min(max(q.x,max(p.y,q.z)),0.0)),
+ length(max(vec3(q.x,q.y,p.z),0.0))+min(max(q.x,max(q.y,p.z)),0.0));
+}
+
+float sdf_torus(vec3 p, vec2 t) {
+ vec2 q = vec2(length(p.xy)-t.x,p.z);
+ return length(q)-t.y;
+}