Home

Awesome

Wave Particles with Interactive Vortices

Final Result

Overview

In game industry water can be divided into two domains, ocean and river. This project focuses on river. Not too long ago, a demo of a real-time river editor was developed by graphics programmer Jean-Philippe Grenier from Ubisoft(now Unity). We think what he did was awesome and want to replicate it (as possible as we can).

Traditionally, rivers are rendered using flow maps. Flow maps are generated by fluid simulations or created by artist or even both. Flow maps are used for advection of water properties such as normal and uv. This technique can give the river a deterministic fluid look, but it fails to capture the sense of height compared with the less controlled ocean rendering techniques, which basically stack several noise functions together to generate the waves. Stacking noise functions together only works for ocean because the ocean does not flow. When you want the water both flow and have the sense of height, a new method should be used.

(picture from Rendering rapids in Uncharted 4 by Carlos Gonzalez-Ochoa, Siggraph 2016 Advances in Real-Time Rendering in Games course)

The new method is Wave Particles. Initially, Wave Particles were introduced into game industry by Naughty Dog for Uncharted 3 to simulate local high frequency wave of oceans. Then it was adopted and adapted to render rivers by Naughty Dog for Uncharted 4 paired with stacking technique.

(picture from Implementing Wave Particles for Real-time Water Waves 2007)

The significance of the Jean-Philippe Grenier's work is that it generates flow map in real-time. That is why the user can interactively create rocks to block the river and affect the flow of river as we can see in the video. When performing advection on height and normal, previous implementations from Naughty Dog or Valve use noise and blending techniques to minimize repetition and pulsing caused by advection of a finite sized texture. But in this demo the developer used a new technique called Wave Profile Buffer to solve the repetition and pulsing.

(picture from Water Flow in Portal 2 by Alex Vlachos, Siggraph 2010 Advances in Real-Time Rendering course)

(picture from Rendering rapids in Uncharted 4 by Carlos Gonzalez-Ochoa, Siggraph 2016 Advances in Real-Time Rendering in Games course)

Goals

Milestones

Milestone 1 Update

Milestone 2 Update

Milestone 3 Update

References

River Editor Water Simulation in Real-Time

Wave Particles Slides

Wave Particles Paper

Water Surface Wavelets

Uncharted 3 Ocean Rendering

Uncharted 4 River Rendering

Valve Flow Map

A 2D Fluid Solver

GPU Gems: Fast Fluid Dynamics Simulation on the GPU

A Similar Workflow

Caustics