Modern terrain

Started by
0 comments, last by Cygon 16 years, 6 months ago
Hello all. So, I haven't made a terrain engine since a voxel engine I made after playing Magic Carpet. I have a very simple brute-force renderer going right now, and am trying to figure out which route to go from here. I know a lot has changed in terrain rendering over the last 10 or so years, so what's considered the best way to do it? Like LOD schemes... Is an LOD algorithm like ROAM going to be more of a waste of CPU than anything? Might it be good to implement a simple distance-only based LOD scheme at least? What about visibilty determination? A grid of small terrain chunks that you just cast 2d rays from your viewpoint? Some sort of occlusion culling whether it be convex-hull based or horizon based? Would just using a kd-tree be the best method overall? Does the terrain complexity not need to be as high if using foilage methods and various bump mapping technique(s)? Essentially, this terrain will be rendered from a first person perspective. I'm interested to see other people's responses. Cheers -Scott
Advertisement
ROAM 1.0 is hopelessly outdated. It tries to optimize the terrain mesh on the triangle level, which requires you to send each and every triangle you're going to render to the graphics card, each frame. This is very much the opposite of the direction graphics card development took.

ROAM 2.0 tries to combat this and succeeds to a certain degree, but I'd still call it suboptimal in terms of achievable visual quality compared to other algorithms. That being said, it might could be the weapon of choice if you need to draw huge distances.

GeoMipmapping is good for short to medium distances. The number of drawing calls will start growing exponentially once your distance exceeds the terrain's page size, but having maybe 3-4 pages of viewing distance allows for quite large terrains with good detail.

Brute force rendering is also becoming more and more reasonable. It's very easy to implement, there are no popping artifacts since there is no mesh simplification going on and the graphics card can handle the static vertex arrays very well. The terrains in UT2004 and Unreal 2 were rendered this way.

-Markus-
Professional C++ and .NET developer trying to break into indie game development.
Follow my progress: http://blog.nuclex-games.com/ or Twitter - Topics: Ogre3D, Blender, game architecture tips & code snippets.

This topic is closed to new replies.

Advertisement