aboutsummaryrefslogtreecommitdiff
path: root/src/main.cc
diff options
context:
space:
mode:
authorAdrian Kummerlaender2019-02-23 16:10:08 +0100
committerAdrian Kummerlaender2019-02-23 16:10:08 +0100
commit389da8159978571e8156ff7692bc595d957e846e (patch)
treebd40ebff4b5f917a2d25ce76b973709922aa7b59 /src/main.cc
parent9779fd7484f7af6d10ae28ca3763c6d938c341e3 (diff)
downloadcompustream-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.cc12
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() ) {