From 389da8159978571e8156ff7692bc595d957e846e Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 23 Feb 2019 16:10:08 +0100 Subject: Store material in fluid buffer and improve visualization Replaces the density value which is actually not that useful for visualization. Encoding integer values as floats by casting and comparing them using exact floating point comparison is not very safe but works out for now. --- src/main.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/main.cc') diff --git a/src/main.cc b/src/main.cc index f685c8f..c9fb347 100644 --- a/src/main.cc +++ b/src/main.cc @@ -10,7 +10,6 @@ #include "buffer/vertex/fluid_cell_buffer.h" #include "buffer/vertex/lattice_cell_buffer.h" -#include "buffer/vertex/material_buffer.h" #include "shader/wrap/graphic_shader.h" #include "shader/wrap/compute_shader.h" @@ -67,7 +66,6 @@ int renderWindow() { std::unique_ptr lattice_a; std::unique_ptr lattice_b; std::unique_ptr fluid; - std::unique_ptr geometry; std::unique_ptr collide_shader; std::unique_ptr stream_shader; @@ -78,12 +76,12 @@ int renderWindow() { lattice_a = std::make_unique(nX, nY); lattice_b = std::make_unique(nX, nY); - fluid = std::make_unique< FluidCellBuffer>(nX, nY); - geometry = std::make_unique< MaterialBuffer>(nX, nY, [](int x, int y) -> int { + 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 == 1 || y == nY-2) ) { + 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 @@ -105,8 +103,8 @@ int renderWindow() { auto pause_key = window.getKeyWatcher(GLFW_KEY_SPACE); - auto tick_buffers = { lattice_a->getBuffer(), lattice_b->getBuffer(), fluid->getBuffer(), geometry->getBuffer() }; - auto tock_buffers = { lattice_b->getBuffer(), lattice_a->getBuffer(), fluid->getBuffer(), geometry->getBuffer() }; + auto tick_buffers = { lattice_a->getBuffer(), lattice_b->getBuffer(), fluid->getBuffer() }; + auto tock_buffers = { lattice_b->getBuffer(), lattice_a->getBuffer(), fluid->getBuffer() }; window.render([&](bool window_size_changed) { if ( pause_key.wasClicked() ) { -- cgit v1.2.3