Project Raycaster
Paying Tribute To A Gaming Legend
|
Raycasting is best described as a poor mans form of Raytracing. It is a process for determining the visibility of surfaces through a projection plane by means of "casting" or "tracing" lines. The distinction between the two is in the number of rays that are traced. Raytracing requires the tracing of rays for every pixel in the final image. Raycasting on the other hand relies on geometric constraints that allows for only a small subset of the total pixels to be traced. The success of Raycasting stems from the geometric constraints it imposes on the objects within the scene. By restricting walls to be orthogonal and of uniform height, Raycasting can achieve a performance advatange several orders of magnitude higher than Raytracing. To illustrate this we could render a 640x480 image using both a Raycaster and a Raytracer. The Raytracer would need to trace 640x480 rays for a total of 307,200. The Raycaster would need only to trace enough rays to corrospond to the images width which is 640. As you can see the Raycaster is 480 times faster. In 1992, id software gave birth to the quintessential goldenchild of Raycasting, Wolfenstein 3D. If it wasn't for Wolfenstein, Raycasting would most likely have fallen into complete obscurity. And of course without Raycasting, Wolfenstein would have never been possible. In a time of limited processing power, zero video accleration, and a gaming industry dominated by consoles, Raycasting allowed the genuises at id software to forever change PC gaming and to usher in an age of PC gaming dominance. The purpose of the Raycasting Project is both a tribute to the developers at id software and as a learning opportunity for myself and other aspiring game programmers. By understanding where programmers like John Carmack came from and the obstacles they faced we can better understand the obstacles of developing a modern 3D game engine. |
|
|
|