aboutsummaryrefslogtreecommitdiff
path: root/template/sdf.cl.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.cl.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.cl.mako')
-rw-r--r--template/sdf.cl.mako56
1 files changed, 56 insertions, 0 deletions
diff --git a/template/sdf.cl.mako b/template/sdf.cl.mako
new file mode 100644
index 0000000..b98b35f
--- /dev/null
+++ b/template/sdf.cl.mako
@@ -0,0 +1,56 @@
+typedef float3 vec3;
+typedef float2 vec2;
+
+float3 v3(float x, float y, float z) {
+ return (float3)(x,y,z);
+}
+
+float2 v2(float x, float y) {
+ return (float2)(x,y);
+}
+
+__constant float3 center = (float3)(${geometry.size_x/2.5}, ${geometry.size_y/2}, ${geometry.size_z/2});
+
+<%include file="sdf.lib.glsl.mako"/>
+
+float sdf(vec3 v) {
+ ${sdf_src}
+}
+
+__kernel void setup_channel_with_sdf_obstacle(__global int* material) {
+ const unsigned x = get_global_id(0);
+ const unsigned y = get_global_id(1);
+ const unsigned z = get_global_id(2);
+
+ const unsigned gid = z*${geometry.size_x*geometry.size_y} + y*${geometry.size_x} + x;
+
+ if (x == 0 || x == ${geometry.size_x-1} ||
+ y == 0 || y == ${geometry.size_y-1} ||
+ z == 0 || z == ${geometry.size_z-1}) {
+ material[gid] = 0;
+ return;
+ }
+
+ if (x == 1) {
+ material[gid] = 3;
+ return;
+ }
+
+ if (x == ${geometry.size_x-2}) {
+ material[gid] = 4;
+ return;
+ }
+
+ if (y == 1 || y == ${geometry.size_y-2} ||
+ z == 1 || z == ${geometry.size_z-2}) {
+ material[gid] = 2;
+ return;
+ }
+
+ if (sdf((float3)(x,y,z)) < 0.0) {
+ material[gid] = 2;
+ return;
+ }
+
+ material[gid] = 1;
+}