Liwen Fan
Masters of Science Capstone Project, June 2022
[Proposal Report Presentation]
Real-time realistic fluid rendering is important because fluid is ubiquitous and can be found in many Computer Generated Imagery (CGI) applications, such as video games and movies. However, realism in fluid rendering can be complex due to the fact that fluid does not have a concrete physical form or shape. There are many existing solutions in modeling the movement and the appearance of fluid. The movement of fluid focuses on simulating motions such as waves, ripples, and dripping. The appearance, or rendering, of fluid aims to reproduce the physical illumination process to include effects including reflection, refraction, and highlights. Since these solutions focus on addressing different aspects of modeling fluid, it is important to clearly understand application requirements when choosing among these.
This project focuses on the appearance, or the rendering, of fluid. We analyze existing solutions in detail and adopt the solution which is most suitable for real-time realistic rendering. With a selected solution, we explore implementation options based on modern graphics hardware. More specifically, we focused on graphics hardware that can be programmed through popular interactive graphical applications for the reasons of supporting interactive modeling, high-level shading language, and fast turnaround debugging cycles. The solution proposed by Van Der Laan et al., in their research article from the 2009 ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games (I3D) is the choice of solution for this project. Our analysis shows that their approach is the most suitable because of the real-time performance, high-quality rendered results, and very importantly, provided implementation details.
The graphics system and hardware evaluation led to the Unity game engine. This is our choice of implementation platform due to its friendly interactive 3D functionalities, high-level shading language support, and support for efficient development cycles. In particular, the decision is based on Unity’s support of Scriptable Render Pipeline (SRP) functionality where the details of an image generation process can be highly customized. The SRP offers flexibility with ease of customizing shaders, and control of number of passes in processing the scene geometry for each generated image. In our implementation, the SRP is configured to compute the values to all of the parameters in the fluid model via separate rendering passes.
Our implementation is capable of rendering fluid realistically in real-time, where the users have control over the actual fluid appearance. The delivered system supports two types of simple fluid motion: linear waves and circular ripples. The rendered fluid successfully captures effects from the intrinsic color of the fluid under Fresnel reflection, the reflection of environmental elements, and, highlights from the light sources. In addition, to provide users with the full control on the rendered results, a friendly interface is supported. To demonstrate the system, we have configured to showcase our fluid rendering of some common conditions including swimming pool, muddy pond, green algae creek, and colored fluid in a flowery environment.