aboutsummaryrefslogtreecommitdiff
path: root/src/shader/compute.glsl
diff options
context:
space:
mode:
authorAdrian Kummerlaender2018-05-25 23:47:27 +0200
committerAdrian Kummerlaender2018-05-25 23:48:59 +0200
commitf728e4c8d202de241673a13ce61570b6acb4bba7 (patch)
treea7e29c4319f0e6d667b98f359ddf089c0565c15a /src/shader/compute.glsl
parent5157658ec0cc07d2c56c978ca010cbb78236439f (diff)
downloadcomputicle-f728e4c8d202de241673a13ce61570b6acb4bba7.tar
computicle-f728e4c8d202de241673a13ce61570b6acb4bba7.tar.gz
computicle-f728e4c8d202de241673a13ce61570b6acb4bba7.tar.bz2
computicle-f728e4c8d202de241673a13ce61570b6acb4bba7.tar.lz
computicle-f728e4c8d202de241673a13ce61570b6acb4bba7.tar.xz
computicle-f728e4c8d202de241673a13ce61570b6acb4bba7.tar.zst
computicle-f728e4c8d202de241673a13ce61570b6acb4bba7.zip
Restructure source directory
Diffstat (limited to 'src/shader/compute.glsl')
-rw-r--r--src/shader/compute.glsl62
1 files changed, 0 insertions, 62 deletions
diff --git a/src/shader/compute.glsl b/src/shader/compute.glsl
deleted file mode 100644
index eaf5579..0000000
--- a/src/shader/compute.glsl
+++ /dev/null
@@ -1,62 +0,0 @@
-static const std::string COMPUTE_SHADER_CODE = R"(
-#version 430
-
-layout (local_size_x = 1) in;
-layout (std430, binding=1) buffer bufferA{ float data[]; };
-
-uniform vec2 world;
-
-// ODE solver
-
-vec2 f(vec2); // field definition is to be appended
-
-vec2 explicitEuler(float h, vec2 v) {
- return v + h * f(v);
-}
-
-vec2 classicalRungeKutta(float h, vec2 v) {
- const vec2 k1 = f(v);
- const vec2 k2 = f(v + h/2. * k1);
- const vec2 k3 = f(v + h/2. * k2);
- const vec2 k4 = f(v + h * k3);
-
- return v + h * (1./6.*k1 + 1./3.*k2 + 1./3.*k3 + 1./6.*k4);
-}
-
-// pseudo random numbers for particle placement
-
-float rand(vec2 v){
- return fract(sin(dot(v, vec2(12.9898,78.233))) * 43758.5453);
-}
-
-float mapUnitToWorldX(float s) {
- return -(world.x/2.) + s * world.x;
-}
-
-float mapUnitToWorldY(float s) {
- return -(world.y/2.) + s * world.y;
-}
-
-bool insideWorld(vec2 v) {
- return v.x > -world.x/2.
- && v.x < world.x/2.
- && v.y > -world.y/2.
- && v.y < world.y/2.;
-}
-
-void main() {
- const uint i = 3*gl_GlobalInvocationID.x;
- const vec2 v = vec2(data[i+0], data[i+1]);
- const vec2 w = classicalRungeKutta(0.01, v);
-
- if ( data[i+2] < 5. && insideWorld(v) ) {
- data[i+0] = w.x;
- data[i+1] = w.y;
- data[i+2] += 0.01;
- } else {
- data[i+0] = mapUnitToWorldX(rand(v));
- data[i+1] = mapUnitToWorldY(rand(w));
- data[i+2] = rand(v+w) * 5.;
- }
-}
-)";