rendering lakes, ponds and rivers on terrain

Started by
0 comments, last by spek 15 years, 4 months ago
Hi I was wondering if I should just create on big triangle grid and render it below my entire terrain and simulate the 3d water with that grid? Most, if not all the tutorials about 3d water rendering involves creating a grid and displacing the vertices. Lets say you have a terrain and you carve a river from one edge to another end. Do you just create additional geometry that follows along the line of the river? Then there's also 2 - 3 additional ponds and lakes in your terrain, do you also create additional small grid sized geometry to put on those holes? Thanks.
Advertisement
If you use 1 big quad, there will be energy wasted into rendering the water everywhere you stand (unless you look into the sky). So, using puzzle pieces that fit right into a canal or pool should be more efficient.

However, there are a couple of problems here. First, games that use alot of water might reserve X % of the performance for water, so it doesn't matter if the water is visible or not. It's a somewhat lazy approach, but then again it saves modelling complex shapes of geometry fit into a canal. And if you want waves, you could go for a LOD system. Just like in terrain rendering, the waves nearby are using alot of vertices while distant waves are simple shapes. LOD is relative easy to apply on a quad-shapes uniform grid. It gets more difficult if you must apply it on a complex shape such as a curved canal. Last but not least, if you exactly want to make a puzzle piece that fits into a pool, you might end up having quite alot vertices at the edges. Quads are simple and easy to render shapes. So, in the end its a matter of balancing between vertices/LOD and fillrate.


As for small pools of water (rain on the streets for example), these are ussually slightly different then relative big reflecting water planes. They ussually don't have waves at all, so a simple quad on the ground is ussually enough. Their limited size also allow to use more simple reflection techniques, such as (pre-rendered) cubeMaps, instead of mirroring the world.

Greetings,
Rick

This topic is closed to new replies.

Advertisement