Free Quake 2 demo using real-time path tracing in Vulkan

If you have an NVIDIA RTX GPU, go get this demo of Quake 2 path tracing by Christian Shied and many others. It’s free, and easy to install, as the directions actually work: install the Quake II Starter, download and unzip their Windows executable, copy the .pak files from the Starter to q2vkpt\baseq2, (install the Visual Studio 2017 redistributable if you don’t have it), and run. It’s single player and multiplayer.

It’s Quake 2 in all its crazy-fast running and gunning glory, with shots and explosions that light up the walls, reflective water, and other bits of eye candy. To quote their page:

This client implements fully dynamic illumination without precomputation supporting area light sources, reflections, soft shadows, and indirect illumination. This client is a port of our real-time path tracer vkpt and is based on the Quake II engine Q2PRO.

This effort comes about a decade after Daniel Pohl’s Quake Wars ray tracing conversion, but now works on a normal machine. The ray traced version isn’t particularly more playable than the original, e.g., the lighting for the button to open the cage for your first new gun makes it invisible, but it’s pretty great to see fun little effects. I think all of these effects could be done with rasterization tricks – we are talking about a 21-year-old game here, so the content’s not much to work with – but I suspect it was much easier to add them all with ray tracing than specialized hacks, and with fewer artifacts. That said, they really are path tracing and denoising each frame, which is impressive. See their site for more information and screenshots and Githubbed code.

Anyway, two screen shots I made today, running through the original and the ray traced, with approximate original vs. RTRT shots – something they don’t have on their site. They have nice example videos, which are more fun. I kept trying to take a screen shot of the blaster in use, as its bullets light up the nearby environment, but couldn’t hit the screen capture button quickly enough.