Ray Casting Tutorial – Part 1
May 17, 1996



There has been an explosive growth in the personal computer market in the past few years*. This growth, in part, is generated by excitement and curiosity for multimedia titles. This project is an attempt to obtain some knowledge and experience on the multimedia title development process. Specifically, we will take a closer look on issues related to the development of a three dimensional multimedia game.

(*This document was written in 1996)


Ray-casting sensation began with the release of a game, Wolfenstein 3D (iD Software), in 1992 (seeFigure 3 on the next page). In Wolfenstein 3D, the player is placed on a three dimensional maze-like environment, where he/she must find an exit while battling multiple opponents. Wolfenstein 3D becomes an instant classic for its fast and smooth animation. What enables this kind of animation is an innovative approach to three dimensional rendering known as “ray-casting.”

Wolfenstein 3D was developed and created by Id Software. Henceforth, Id’s programmer, John Carmack, might well be the person who initiates the ray-casting sensation (Myers 5).


Ray-casting is a technique that transform a limited form of data (a very simplified map or floor plan) into a 3D projection by tracing rays from the view point into the viewing volume (LaMothe 942). For example, ray-casting transforms something like A into B in Figure 1.

Figure 1A and B

Note that this is not the only application of ray-casting. Ray-casting can also be used to render terrain map such as in Figure 2 (below) for instance. The important point to remember is that ray-casting “traces rays backward from viewer’s eye to objects.”

Figure 2
Here is an example of a rendering by subclass/variant of ray casting, known as height mappingor terrain mapping or voxel rendering. To learn more about voxel rendering, refer to the article by Peter Friese on More Tricks of Game Programming Gurus; or the book Black Art of 3D Game Programming by Andre La Mothe.

If you have a Java capable browser, you can try a voxel program by clicking here.