diff options
author | Adrian Kummerlaender | 2019-02-23 16:10:08 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2019-02-23 16:10:08 +0100 |
commit | 389da8159978571e8156ff7692bc595d957e846e (patch) | |
tree | bd40ebff4b5f917a2d25ce76b973709922aa7b59 /src/main.cc | |
parent | 9779fd7484f7af6d10ae28ca3763c6d938c341e3 (diff) | |
download | compustream-389da8159978571e8156ff7692bc595d957e846e.tar compustream-389da8159978571e8156ff7692bc595d957e846e.tar.gz compustream-389da8159978571e8156ff7692bc595d957e846e.tar.bz2 compustream-389da8159978571e8156ff7692bc595d957e846e.tar.lz compustream-389da8159978571e8156ff7692bc595d957e846e.tar.xz compustream-389da8159978571e8156ff7692bc595d957e846e.tar.zst compustream-389da8159978571e8156ff7692bc595d957e846e.zip |
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.
Diffstat (limited to 'src/main.cc')
-rw-r--r-- | src/main.cc | 12 |
1 files changed, 5 insertions, 7 deletions
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<LatticeCellBuffer> lattice_a; std::unique_ptr<LatticeCellBuffer> lattice_b; std::unique_ptr<FluidCellBuffer> fluid; - std::unique_ptr<MaterialBuffer> geometry; std::unique_ptr<ComputeShader> collide_shader; std::unique_ptr<ComputeShader> stream_shader; @@ -78,12 +76,12 @@ 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); - 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() ) { |