|
[Ray tracing can offer amazing graphical renderings, but it is often seen as too computationally taxing for real-time use. In this sponsored article, part of the Intel Visual Computing microsite, Daniel Pohl of Intel's ray tracing group discusses how his team brought their past successes with the technique to Splash Damage's multiplayer shooter Enemy Territory: Quake Wars.]
A scene unfolds in the computer room of a
major university. Those watching sense electricity in the
air, the kind of tension that builds before a thunderstorm,
as a cluster of 20 networked PCs, each equipped with
spanking new dual-socket technology and dual processors,
warm to the task assigned to them: distributed ray
tracing of the game Quake 3 (www.q3rt.de). Though
the modest display resolution (512x512) and a frame
rate of 20 frames per second (fps) aren't overwhelming
by the standards of the day, this doesn't diminish the
accomplishment in the least. Special effects never before
seen flimmer across the display screen. The viewers
watch with rapt attention and a feeling of satisfaction as
the intricately rendered images move about the screen.
Amazingly, this happened in 2004, a time when most
people rejected the concept of real-time ray tracing.
Back to the Future (2008, That Is)
A new research project from the ray-tracing team at
Intel advances beyond the 2004 achievements, this time
converting the game Enemy Territory: Quake Wars, which
was created by id Software and Splash Damage, to use ray
tracing. Read on to learn about the development process
that followed, the challenges we had to overcome, and the
benefits we ultimately achieved-all of which provide
valuable insights into the future of ray tracing. To pump up
your visual adrenaline level, we've also included numerous
images to show the process in action. By the time you
finish this article, you'll have a better idea of the ways in
which ray tracing can quickly and easily render light and
shadow.
Starting From Scratch
For this project, we started rewriting the renderer
from ground zero. Because of this, the very first
images from the renderer were not of typical ray-tracing caliber, but displayed only the basic parts of the
geometry, without any shaders or textures (Figure 1).
Figure 1. Quake Wars: Ray traced without textures.
Typically, games load their
geometry from a variety of different
model formats—either created over
the in-game map editor or through
external modeling tools. Once it is
verified that there are no missing
objects, the loading of textures can
begin. Modern games have their own
material description language that
allows designers to easily modify
texture parameters, blend textures,
use bump and specular maps, and
write small shader programs. For
example, compare the untextured
image in Figure 1 with the unlit
(Figure 2) and lit (Figure 3) textured
images of the same scene.
Figure 2. Quake Wars: Ray traced with textures (unlit).
Figure 3. Quake Wars: Ray traced with textures (lit).
Today’s games all use a rendering
technique called rasterization. Rasterization requires difficult programming work and as many
special effects (such as shadows or
reflections) need to be calculated
as approximations over multiple rendering passes and are often
stored in resolution-limited textures
in between. These approximations
fail in certain cases. Let’s look
closer at shadows. With ray tracing,
you only need to check if the path from the light to the surface is
blocked or not. This can be easily determined with just a ray (the so-called "shadow ray"). If the ray
from the light source can reach the
surface, the point on the surface is
lit. Otherwise, it is in shadow. The
gameplay in Quake Wars: Ray Traced
takes place primarily outdoors, where
the most important light source is sunlight. We were able to apply this
form of lighting to the scenes quite
easily, and the appearance of the
shadows is what one would expect.
|
Voxel vs. Triangle: The Main Event. =)