-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Wumpf edited this page Nov 30, 2013
·
23 revisions
Some experiments with realtime water & erosion simulation on heightfield terrains, using OpenGL 4.3.
- C++11 (using mainly Visual Studio 2013
- OpenGL 4.3
- trunk version of ezEngine - I also taking a minor part in its development (File IO, Memory Management, Basic Math, Window creation, Input, ...)
- GLEW (OpenGL function wrangler)
- AntTweakBar (DropIn solution for tweak variables)
- The most of the sources were already GPU orientated, but almost none of them used the features of modern hardware. I rearranged nearly everything and make very often use of Compute Shader, Indirect Draw and other modern features.
- Simulation in fixed timesteps - each frame the simulation steps n times, number of steps per second is constant.
Heightfield water: "Column base Water simulation" Water in column, each column connected to 4 neighbors with "virtual pipes". Outgoing flow in each of the 4 directions is saved per heightfield-pixel.
Idea relatively good explained and why the outgoing-flow thing is so important can be found here. While being not very detailed Theses slides can give a very good overview what this is all about.
(todo: Short explanation, give some references)
- Simple Forward renderer
- Gamma correct Rendering - it is really simple, try it if you haven't already!
- The definite Fog
- One directional light atm
- Texture Blending
- Fresnel is great everywhere!
- Screenspace Tesselation inspired by this. Solved crack problem with triangle patches instead, no fine displacement map as described in the paper. Uses instancing, only 3 draw calls (one per Patch - full, one transition, two transisions)
- Reuses grid from terrain. Almost the same geometry setup, but cull patches under terrain in Control shader
- tossed informations mainly from this article and from (this thread)[http://www.gamedev.net/topic/527145-rendering-natural-waters-coefficients-conversion/] around until I something came out I was confident with
Cheap gradient rendered with fullscreen triangle after everything else (todo)
- Using some fancy C++11 feature
- Renderer is based on some gl wrapper classes that are not meant to abstract OpenGL but just to make things easier
(List not complete, mostly a memory aid to my self)
- Implement visible Waterflow like described here
- Athmospheric Scattering
- Fancy erosion stuff
- Water Spray?
- Moar sliders
- Moar sliders
- More OpenGL wrapper stuff