Here are two images of a "small" terrain renderer that i've
been working on for two weeks now. It's going to be used
for a procedural planet renderer, and features:
- A mix of earth heightmaps for high-level informations (up to the
kilometer level), and on-the-fly computed procedural details
for high frequencies, based on a 12-octaves ridged multi-perlin
- The current sample is 2048x2048 km with a resolution of 10m,
which, if it was statically stored, would represent a bit more
than 83 billion triangles. This means you can walk or fly for
hours and never see the same thing.
- Uses geomorphing on the cpu, calculates lighting & textures
on-the-fly. Texturing has to be improved, it uses two textures
(grass and rock) using per-vertex blending at the moment.
- No cracks, T&L-friendly. The current shots run at a bit more
than 100 fps (12 Millions of triangles per second) a on Radeon
9700. Polycount is in the 20k - 50k range per pass.
- CLOD is used with 5x5 chunks (instead of the 3x3 basic
implementation). This helped to reduce the number of chunk
nodes in memory at a given time, generally 1500-2000 in these
screenshots. As a result frustum culling is pretty fast (2 ms
average) and memory usage is pretty low (around 60 Mb).
- No standard distance culling: you can zoom seamlessly from
the meter level up to many kilometers. Horizon culling is
- Atmospheric effects, based on the paper from ATI:
"Rendering outdoor light scattering in real-time". I use
texture maps instead of vertex shaders though.
- The whole terrain is rendered in 3 pass: the first one
is the unlit, textured terrain. The second pass does lighting
modulated by the exctinction term. The last pass adds
the in-scattering contribution. The sky is a sphere.
- TODO: better texturing (up to 6 layers), water rendering
with env-bump-mapping, volumetric clouds + cloud shadows on
the terrain, rain & snow, bump-mapping, earth curvature +
horizon culling, misc. optmizations, and mostly, ground details
(grass, rocks, trees).
For infos or questions, mail me at: email@example.com