Here is a list of computer graphics related projects I have previously worked on. A lot of it is student work from 2011-2016, some are free time projects, some relate computer graphics and software development to digital art.

An individual free time project of implementing a fluid simulator from scratch in C++.

I have gone from using semi-Lagrangian advection on the whole grid domain to later separate liquid from air by using marker particles. I then implemented PIC (Particle in Cell) / FLIP (Fluid Implicit Particle) advection as a better solution to simulate liquids. It is now possible to get highly viscous fluids using the PIC method and more liquid like behaviour then I was able to get using semi-Lagrangian advection and marker particles.

Current state of the project features:

- Staggered MAC Grid
- Different advection schemes
- Semi Lagrangian advection with
- Bilinear interpolation
- Runge Kutta and Euler solver
- PIC advection with bilinear interpolation
- FLIP advection with bilinear interpolation
- PIC / FLIP combination
- Pressure solve using the conjugate gradient method with the linear algebra library "Eigen"
- Enforce Dirichlet boundary condition
- Marker particles for air/fluid separation
- Velocity extension using brute force search through grid

PIC / FLIP simulations rendered with grid, velocity field and particles. The first simulation is 100% PIC, the second one is 100% FLIP. The third one is a combination 2% PIC and 98% FLIP.

A simulation on a bigger grid

A real time simulation with interaction and OpenGL rendering

- Adaptive time steps
- Vorticity confinement
- Make sure marker particles are outside of obstacles
- Other interpolation alternatives (quadratic, cubic, Catmull Rom)
- A better method for velocity extension
- 3D simulation
- Sophisticated rendering
- Check if performance is enhanced if the conjugate gradient solve is parallelized using OpenMP or CUDA