Presently we have our main project framework implemented for loading and running fragment shader programs,
updating attributes in our grid, and running simulation steps on the GPU. Additionally we also have a rudimentary GUI
made with the
The main idea behind our implementation of the eulerian grid solver is to store fluid attributes (such as density and
velocity) in 2 swappable
Currently, we have not implemented any of the shaders needed for the simulation (Such as shaders for applying advection, viscous diffusion, external forces, projection, and boundary conditions). We have a rudimentary particle shader implemented (shown above) and hope to use this to visualize the flow of fluid around boundaries/obstacles. As of now, this shader does not work with our current framework. We plan to refactor it so that it both works well with our current gpu simulation - to - screen visualization pipeline and updates positions based on the underlying velocity vector field.
Initially, we had some trouble with getting the framework set up to be able to render the particle simulation, as none of us had prior experience working with three.js or WebGL. We are currently working through understanding the math behind the Navier-Stokes equations and figuring out how to separate the relevant data into textures that we can calculate inside our shader code. Additionally, until we implement most of the features (advection, pressure, diffusion, external forces), our rendered output will be mostly garbage and thus be hard to debug (and because the shaders are doing work in the gpu, it is difficult to debug in ways that are not just checking for the expected screen output).
April 25th - April 30th: