Realtime 3D terrain rendering

OData support
Rajacsics Tamás
Department of Automation and Applied Informatics

Large-scale terrain rendering has always been one the most interesting topics in real-time 3D applications. Creating immersive visuals with competitive detail levels both up-close and far away from the virtual camera is alone a complex task, but video games create an environment where many other systems run parallel to the rendering of the landscape. When developing for resource-constrained consoles (PS3 and Xbox 360) where hardware is fixed and aging, we have to maintain high performance but also keep memory requirements at the minimum.

Widespread techniques either limit the size of the traversable terrain to a few square kilometers, or are based on satellite images and lack solutions for close-up details. Many games employ streaming solutions that require complex memory-page caching and eviction schemes, and consume bandwidth from other uses, like audio or animation data. They also only provide acceptable quality when the view is constrained to certain angles, or a few meters of altitude. One must also note that the sheer amount of surfaces that need representation calls for fast, easy, and iteratively refined methods for painting the texture layers.

The solution presented in this thesis is focused on texturing the landscape, which is based on per-pixel semi-procedural splatting of tiling texture atlas-regions, and support easy re-painting on both the terrain model and smaller, more detailed, sometimes even overhanging mesh elements without distortions. Memory requirements are light (around 25MB for 10km²) because of the tiling and asset reuse (this also eliminates the need for streaming), and multiple detail levels are achievable through subtle parameter changes. After a detailed introduction to the 3D rendering pipeline of modern graphics processors to provide background on the topic, the thesis presents the methods for creating the assets the technique is based on. The next chapters describe both the runtime component, and the offline editor, which were developed in C++ during the creation of an actual console-geared video game. The thesis concludes by analyzing the performance of the solution, and describes numerous possible extensions.


Please sign in to download the files of this thesis.