This is an implementation of SigGraph 16' Paper, Schrödinger's Smoke.
This is the final project in Advances in Computer graphics lectured by Prof. Kun Zhou.
The project tries to reproduce the SigGraph 16' paper Schrödinger's Smoke. The paper uses the Schrödinger equation to simulate fluids. The main algorithm is implemented with compute shader and thus runs on GPU. It is faster than the CPU implemenation of the original paper. The algorithm is visualized in Unity Engine with 2 scenes, nozzle and leap frog (both are described by the paper). I rendered about millions of particles to demonstrate the flow of the field.
Below sections are picked out from my final report.
In the implementation, I implemented the incompressible Schrödinger fluid (ISF) algorithm described by the author, and completed the nozzle scene and LeapFrog scene.
In terms of performance, the author uses Houdini, 128^3^ subdivided mesh to solve ISF takes less than 1s, but I use Unity with Compute Shader to perform calculations on GPU, 512x128x128 subdivided mesh can solve ISF in about 200ms ,faster. When simulating particles, I used 400 million particles and finally simulated smoke at 1 fps. If you use Billboard technology with textures, you can use only tens of thousands of particles, and you can achieve real-time simulation (150 fps) on the GTX 1050 while reducing a certain sense of reality.
The highlights of my implementation is that the particle system, FFT calculation, and ISF solution are all calculated on the GPU, and the CPU is only responsible for sending parameters and random seeds. This is much faster than Author’s implementation even with an low end GPU & CPU.
My Implementation | Author’s Implementation |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
My Implementation, before fine tuning:
My Implementation, after fine tuning:
My implemetation:
Author‘s implementation:
Different Parameters