aboutsummaryrefslogtreecommitdiff
path: root/template/sdf.lib.glsl.mako
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-12-27 23:45:51 +0100
committerAdrian Kummerlaender2019-12-27 23:45:51 +0100
commit342d554e2da1f80aa93d5d28d2d87573db87bbb0 (patch)
tree16fe39d508cb8d3df00a4058f1b9a5b8936f6970 /template/sdf.lib.glsl.mako
parentaa8dd7798877b43290bceaa9d3e8c8198540c82c (diff)
downloadsymlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.tar
symlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.tar.gz
symlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.tar.bz2
symlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.tar.lz
symlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.tar.xz
symlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.tar.zst
symlbm_playground-342d554e2da1f80aa93d5d28d2d87573db87bbb0.zip
Add SDF-based grid fin example
Diffstat (limited to 'template/sdf.lib.glsl.mako')
-rw-r--r--template/sdf.lib.glsl.mako71
1 files changed, 71 insertions, 0 deletions
diff --git a/template/sdf.lib.glsl.mako b/template/sdf.lib.glsl.mako
new file mode 100644
index 0000000..515f959
--- /dev/null
+++ b/template/sdf.lib.glsl.mako
@@ -0,0 +1,71 @@
+float sphere(vec3 v, float r) {
+ return length(v) - r;
+}
+
+float torus(vec3 v, vec2 t) {
+ vec2 q = v2(length(v.xz)-t.x,v.y);
+ return length(q)-t.y;
+}
+
+float box(vec3 v, vec3 b) {
+ vec3 q = fabs(v) - b;
+ return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0);
+}
+
+vec3 flip_xy(vec3 v) {
+ return v3(v.y, v.x, v.z);
+}
+
+vec3 flip_yz(vec3 v) {
+ return v3(v.x, v.z, v.y);
+}
+
+vec3 rotate_x(vec3 v, float r) {
+ v.yz = cos(r)*v.yz + sin(r)*v2(v.z, -v.y);
+ return v;
+}
+
+vec3 rotate_y(vec3 v, float r) {
+ v.xz = cos(r)*v.xz + sin(r)*v2(v.z, -v.x);
+ return v;
+}
+
+vec3 rotate_z(vec3 v, float r) {
+ v.xy = cos(r)*v.xy + sin(r)*v2(v.y, -v.x);
+ return v;
+}
+
+vec3 translate(vec3 v, vec3 w) {
+ return v - w;
+}
+
+float rounded(float a, float r) {
+ return a - r;
+}
+
+float sunify(float a, float b, float k) {
+ float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0);
+ return mix(b, a, h) - k * h * (1 - h);
+}
+
+float ssub(float b, float a, float k) {
+ float h = clamp(0.5 - 0.5*(b+a)/k, 0.0, 1.0);
+ return mix(b, -a, h) + k*h*(1.0-h);
+}
+
+float sintersect(float a, float b, float k) {
+ float h = clamp(0.5 - 0.5*(b-a)/k, 0.0, 1.0);
+ return mix(b, a, h) + k*h*(1.0-h);
+}
+
+float sub(float a, float b) {
+ return max(-b, a);
+}
+
+float unify(float a, float b) {
+ return min(a, b);
+}
+
+float intersect(float a, float b) {
+ return max(a, b);
+}