Despite some impressive gains in GPU performance as of late, it is going to be a long time before rendering with path tracing in games is commonplace. The required horsepower is simply out of reach at the moment. That said, computer graphics programmer Edd Biddulph uploaded a video to YouTube that showcases his path tracer running Quake 2 in real-time.
"This video shows new features of my GPU path tracer built into Quake 2. All lighting is computed on-the-fly with the use of ray tracing. In comparison to previous videos which were playbacks of recorded game sessions, this video is composed of live sessions played by myself," Biddulph explains.
When watching the demo, you'll notice what appear to be a lot of artifacts. What you're seeing is actually noise, and it is inevitable on today's hardware. By Biddulph's estimates, it will be another 15-20 years before GPU hardware is powerful enough to do real-time path or ray tracing.
"Keep in mind this is a 20-year-old game being played on the current GPU king the Titan Xp. And even then it's not consistently at 60 frames per second," Biddulph adds.
Despite the noise, this is a really cool demonstration of path tracing. And for those of you who are interested, Biddulph made the source code for his GPU path tracer available on GitHub.
What is path tracing?
Ray tracing and path tracing are different methods of achieving the same thing: more realistic lighting in a scene based on how we naturally see light in the real world. Normally, light rays are calculated based on being projected out from the light source, in the scene. But in the real world, we only see the light that hits our eyes. So ray tracing and path tracing illuminate a scene by calculating the lighting of a scene with light rays being projected from the view port or camera's point of view. The more rays, the more realistic the final render will be.
Both methods are calculation heavy, and while they generate realistic lighting, they're too intensive for today's GPUs to do in real time at high-resolutions. This is why you see so many "dots" in the video below: not enough rays to generate a realistic scene, due to the GPU's inability to process a high number of rays at adequate speed.