From 556f6cea377f6e8620d05081946f8b469b8a1339 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 17 Dec 2018 21:01:53 +0100 Subject: Clean up stream and collide compute shaders --- src/shader/code/stream.glsl | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/shader/code/stream.glsl') diff --git a/src/shader/code/stream.glsl b/src/shader/code/stream.glsl index 147b49b..982b207 100644 --- a/src/shader/code/stream.glsl +++ b/src/shader/code/stream.glsl @@ -6,11 +6,15 @@ layout (local_size_x = 1, local_size_y = 1) in; layout (std430, binding=1) buffer bufferCollide{ float collideCells[]; }; layout (std430, binding=2) buffer bufferStream{ float streamCells[]; }; +/// LBM constants + uniform uint nX; uniform uint nY; const uint q = 9; +/// Data access + float get(uint x, uint y, int i, int j) { return collideCells[q*nX*y + q*x + (i+1)*3 + j+1]; } @@ -19,6 +23,8 @@ void set(uint x, uint y, int i, int j, float v) { streamCells[q*nX*y + q*x + (i+1)*3 + j+1] = v; } +/// Actual stream kernel + void main() { const uint x = gl_GlobalInvocationID.x; const uint y = gl_GlobalInvocationID.y; @@ -30,6 +36,7 @@ void main() { } } } else { + // rudimentary bounce back boundary handling for ( int i = -1; i <= 1; ++i ) { for ( int j = -1; j <= 1; ++j ) { if ( (x > 0 || i >= 0) && x+i <= nX-1 && (y > 0 || j >= 0) && y+j <= nY-1 ) { -- cgit v1.2.3