Anachronox Environment Mapping

If you are only interested in how to make entities reflective, and not how to generate environment maps, and you don't care to read this introduction because you already know everything, you can go directly to step 4.

The animated GIF in the index pane to the left was generated from actual in-game Anachronox screenshots. It shows off the power of environmental texture mapping, which gives entities reflective surfaces. Environment mapping is a great way to simulate reflection, because it looks neat and is not nearly as expensive as computing a real reflection of the scene. Following the directions in this documentation, you can make your own Anachronox environment mapped entities.


The basic steps to creating a reflection map is as follows:

Once you have the parabolic environment mapping textures, you can tell entities to use them.

More detailed instructions on each of these procedures is available by clicking on the links in the environment mapping documentation index. If your browser supports frames you should see them to the left; if not, you can click here.

Technical Information

The technical term for the environment mapping technique used in Anachronox is called dual parabolic environment mapping. It simulates two reflective parabolas placed at the origin of the environment map, and has several advantages over other environment mapping techniques, notably its low resource usage and high image quality. Although it uses more processor cycles than Quake 3's spherical mapping, Anachronox's parabolic mapping is view-independent, and so it can be used for reflecting actual in-game environments for a much more realistic effect. For more information on parabolic mapping, read the PhD thesis by Wolfgang Heidrich, High-quality Shading and Lighting for Hardware-accelerated Rendering, located on his publications page.


This documentation, the code it describes, and the sample images and movies were created by Joey. Therefore, if you have comments or suggestions about these docs, or you have feature requests or bug reports concerning the code, please report to him.