aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.cc22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/main.cc b/src/main.cc
index 2a3dd9b..aa2456e 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -49,6 +49,17 @@ glm::mat4 getMVP(float world_width, float world_height) {
return projection * view;
}
+int setupGeometry(int x, int y) {
+ if ( x == 0 || y == 0 || x == nX-1 || y == nY-1 ) {
+ return 0; // disable end of world
+ }
+ if ( ((x == 1 || x == nX-2) && (y > 0 && y < nY-1))
+ || ((y == 1 || y == nY-2) && (x > 0 && x < nX-1)) ) {
+ return 2; // bounce back outer walls
+ }
+ return 1; // everything else shall be fluid
+}
+
int renderWindow() {
Window window("compustream");
@@ -78,16 +89,7 @@ int renderWindow() {
lattice_a = std::make_unique<LatticeCellBuffer>(nX, nY);
lattice_b = std::make_unique<LatticeCellBuffer>(nX, nY);
- fluid = std::make_unique< FluidCellBuffer>(nX, nY, [](int x, int y) -> int {
- if ( x == 0 || y == 0 || x == nX-1 || y == nY-1 ) {
- return 0; // disable end of world
- }
- if ( ((x == 1 || x == nX-2) && (y > 0 && y < nY-1))
- || ((y == 1 || y == nY-2) && (x > 0 && x < nX-1)) ) {
- return 2; // bounce back outer walls
- }
- return 1; // everything shall be fluid
- });
+ fluid = std::make_unique< FluidCellBuffer>(nX, nY, setupGeometry);
interact_shader = std::make_unique<ComputeShader>(INTERACT_SHADER_CODE);
collide_shader = std::make_unique<ComputeShader>(COLLIDE_SHADER_CODE);