Say goodbye to polygons and shaders. Say goodbye to OpenGL and DirectX. The future, from this point on, is all ray tracing.

One chart – one image – shows it perfectly:

(Source: PC Perspective)

Ray tracing outperforms rasterization for large numbers of polygons.

There are many disadvantages to rasterization:

  • It is slow (linear in time) for large numbers of polygons.
  • It does not produce reflections very efficiently or accurately.
  • It cannot dynamically produce effects like refraction or shadows.
  • It relies heavily on textures (which use up tons of space!) to produce lighting effects.
  • Coding rasterized games is difficult because of the requirement to approximate every single lighting effect that would be calculated automatically using ray tracing.

Of course, rasterization does have one advantage (and one only), and that is that on present-day PCs, it can render scenes in real time at higher quality than ray tracing.

Throughout computing history, it has always been the case that temporary approximation techniques were phased out when enough computing power was available to do away with them. For example, the use of color palettes in the 1990s (i.e. 256 colors) disappeared as soon as there was enough GPU memory to store 32-bit pixel values. When resolutions rose to 800×600 and beyond, bitmap fonts could finally be replaced by True Type fonts. Pixels were gradually phased out of the graphics world in favor of ems or inches.

Notice that rasterization has dominated the PC gaming industry since the 1990s. Currently, ray tracing cannot produce scenes at 1080p resolution in real time without sacrificing quality severely. However, this will soon change.

The amount of increase in CPU power (from present levels) needed to allow rendering of ray-traced images at 1080p resolution at 24 fps is only about 10X. This will almost certainly happen before 2020.

There is a movie coming out (in 2012) that is supposedly rendered entirely in real time using ray tracing.

To close off, here is a ray traced image using a ray tracer that I built recently:

Notice the accuracy of the reflections and shadows, and how they come at no extra cost – virtually no performance penalty and no extra code required!