flipCode - Realtime Voxel Landscape Engines


Please update your bookmarks.

This column interface is outdated. These articles have been reformatted and placed within our article archive.

This page is here to avoid broken links, but please update your bookmarks to reflect the new URLs in the article archive.


Originally, realtime voxel landscapes had the reputation among programmers of being extremely simple to develop, especially those with limited degree of freedom. However they were not usually associated with high quality graphics, as most engines at the time produced quite blocky images. More recently, voxel landscapes have become quite popular, featuring in high profile games like Outcast and Delta Force. Their overall quality has also drastically increased, making them potential rivals for the standard polygon engines. Lack of hardware support however has been a serious problem.

This tutorial will start by quickly explaining the basics behind volume graphics. We will then move on to voxel landscapes in particular, and consider how they are rendered. The concept of limited degree of freedom will be introduced, and I will show you how this can drastically improve quality and performance. We will then consider texturing and lighting, and various other techniques to improve quality. Possible optimisations will then be explained, and finally I will describe a way of using hardware acceleration to render the landscape.

I will assume you have knowledge of general computer graphics, and 3D theory. If you don't think you are up to standards, be sure to check out another of my tutorials on realtime computer graphics called The Art Of Demomaking. Knowledge of a particular programming language is not required to understand the theory, since all pseudo-code provided will be quite generic. The sample source code however will be in C++, so practical knowlege of that language would be an advantage.

The main reason for this tutorial was the lack of serious information on realtime voxel landscape engines in general. I've had many requests, and since I consider my knowledge in the area reasonably good, having developed terraVox for about a year, I felt I was the man for the job.

If for any particular reason you wish to contact me, I can be reached at alexjc@altavista.com.
  • Issue 01 - Introduction
  • Issue 02 - Rendering the Landscape's Structure
  • Issue 03 - Texture and Lighting
  • Issue 04 - Level of Detail and Optimisation
  • Issue 05 - Quality Improvement
  • Issue 06 - Hardware Acceleration
  • Issue 07 - The Engine
  • Issue 08 - Final Words