Project Description

This investigation undertook research and practice within the field of Navier Stokes based fluid simulation. The outcome of the project are three simulations, two CPU based and one GPU based method. The implementation of the simulations has been put together within a C++ static library called Furo. The two CPU simulations are useable within any C++ project, the GPU variant however, is currently only useable within DirectX 11.

The project’s research report provides a detailed investigation into Navier Stokes; discussing the accompanying mathematics and its appropriateness of use within the project. A useful consequence of the research was the discovery of significant methods which employ and solve Navier Stokes, documented within works such as ‘Stable Flu- ids’, ‘Real-Time Fluid Dynamics for Games’ and ‘Real-Time Simulation and Rendering of 3D Fluids’ (Stam, 1999, 2003; Crane, Llamas & Tariq, 2007). The discovered works were used as a reference to guide the implementations within the project.

The PhyreEngine and PS4 dev-kits were originally explored as the development platform for the project. However, during the projects investigation, the use of the engine proved detrimental to the implementation of the simulations.

The project con- cluded with a change to DirectX 11 and C++, with the benefits of a more documented and open platform.

Following the research, discovered methods were first explored and implemented, producing 2D and 3D simulations utilising the CPU. Within the exploration of the 3D CPU variant, the understanding to shift the simulation into a parallel paradigm was uncovered, leading to the development of the GPU simulation present within the pro- ject. Alongside the development of a 3D based Navier Strokes simulation, the project explored rendering methods to present the simulation, leading to the implementation of a GPU based volume renderer.

From undertaking the project, a static library useable across numerous DirectX 11 projects was produced. Alongside this, the chosen platform utilised to develop the simulation/library shaped the creation of a standalone DirectX 11 framework. The sim- ulations presented within Furo all accurately solve Navier Stokes, however all can be improved in different ways, a major example applicable to all simulations is the addi- tion of user interaction.