Q2RTX
NVIDIA’s implementation of RTX ray-tracing in Quake II
Install / Use
/learn @NVIDIA/Q2RTXREADME
Quake II RTX
Project Discontinued
This repository is no longer maintained.
If you're looking for a downloadable installer for Quake II RTX, please visit the Releases page.
If you would like to make some improvements, feel free to fork this repository or look for other community projects based on Quake II RTX.
<br> <br> <br>Original README
Quake II RTX is NVIDIA's attempt at implementing a fully functional version of Id Software's 1997 hit game Quake II with RTX path-traced global illumination.
Quake II RTX builds upon the Q2VKPT branch of the Quake II open source engine. Q2VKPT was created by former NVIDIA intern Christoph Schied, a Ph.D. student at the Karlsruhe Institute of Technology in Germany.
Q2VKPT, in turn, builds upon Q2PRO, which is a modernized version of the Quake II engine. Consequently, many of the settings and console variables that work for Q2PRO also work for Quake II RTX.
License
Quake II RTX is licensed under the terms of the GPL v.2 (GNU General Public License). You can find the entire license in the license.txt file.
The Quake II game data files remain copyrighted and licensed under the original id Software terms, so you cannot redistribute the pak files from the original game.
Features
Quake II RTX introduces the following features:
- Caustics approximation and coloring of light that passes through tinted glass
- Cutting-edge denoising technology
- Cylindrical projection mode
- Dynamic lighting for items such as blinking lights, signs, switches, elevators and moving objects
- Dynamic real-time "time of day" lighting
- Flare gun and other high-detail weapons
- High-quality screenshot mode
- Multi-GPU (SLI) support
- Multiplayer modes (deathmatch and cooperative)
- Optional two-bounce indirect illumination
- Particles, laser beams, and new explosion sprites
- Physically based materials, including roughness, metallic, emissive, and normal maps
- Player avatar (casting shadows, visible in reflections)
- Recursive reflections and refractions on water and glass, mirror, and screen surfaces
- Procedural environments (sky, mountains, clouds that react to lighting; also space)
- Sunlight with direct and indirect illumination
- Volumetric lighting (god-rays)
You can download functional builds of the game from GitHub Releases.
Latest development builds can be found in the Actions tab.
To run a development build, download the artifact, extract it and put q2rtx_media.pkz, blue_noise.pkz and the pak*.pak files from the original game into baseq2/.
Additional Information
- Announcement Article
- Ray-Tracing Deep Dive
- Launch Trailer Video
- Path Tracer Overview Video
- GDC 2019 Presentation
- Client Manual
- Server Manual
Also, some source files have comments that explain various parts of the renderer:
- asvgf.glsl explains the denoiser filters
- checkerboard_interleave.comp shows how checkerboarded rendering facilitates path tracing on multiple GPUs and helps with water and glass surfaces
- path_tracer.h gives an overview of the path tracer
- tone_mapping_histogram.comp explains the tone mapping solution
Support and Feedback
System Requirements
In order to build Quake II RTX you will need the following software installed on your computer (with at least the specified versions or more recent ones).
Operating System
| | Windows | Linux | |-------------|------------|--------------------------------| | Min Version | Win 7 x64 | Ubuntu 16.04 x86_64 or aarch64 |
Note: only the Windows 10 version has been extensively tested.
Note: distributions that are binary compatible with Ubuntu 16.04 should work as well.
Note: Linux ppc64le is also known to work though not officially supported.
Software
| | Min Version | |---------------------------------------------------------|-------------| | NVIDIA GPU driver <br> https://www.geforce.com/drivers | 460.82 | | AMD GPU driver <br> https://www.amd.com/en/support | 21.1.1 | | git <br> https://git-scm.com/downloads | 2.15 | | CMake <br> https://cmake.org/download/ | 3.8 | | Vulkan SDK <br> https://www.lunarg.com/vulkan-sdk/ | 1.2.162 |
Submodules
- zlib
- curl
- SDL2
- stb
- tinyobjloader-c
- Vulkan-Headers
- glslang (optional, see the
CONFIG_BUILD_GLSLANGCMake option) - openal-soft
Build Instructions
-
Clone the repository and its submodules from git :
git clone --recursive https://github.com/NVIDIA/Q2RTX.git -
Create a build folder named
buildunder the repository root (Q2RTX/build)Note: this is required by the shader build rules.
-
Copy (or create a symbolic link) to the game assets folder (
Q2RTX/baseq2)Note: the asset packages are required for the engine to run. Specifically, the
blue_noise.pkzandq2rtx_media.pkzfiles or their extracted contents. The package files can be found in the GitHub releases or in the published builds of Quake II RTX. -
Configure CMake with either the GUI or the command line and point the build at the
buildfolder created in step 2.cd build
cmake ..Note: only 64-bit builds are supported, so make sure to select a 64-bit generator during the initial configuration of CMake.
Note 2: when CMake is configuring
curl, it will print warnings likeFound no *nroff program. These can be ignored. -
Build with Visual Studio on Windows, make on Linux, or the CMake command line:
cmake --build .
Music Playback Support
Quake II RTX supports music playback from OGG files, if they can be located. To enable music playback, copy the CD tracks into a music folder either next to the executable, or inside the game directory, such as baseq2/music. The files should use one of these two naming schemes:
music/02.oggfor music copied directly from a game CD;music/Track02.oggfor music from the version of Quake II downloaded from GOG.
In the game, music playback is enabled when console variable ogg_enable is set to 1. Music volume is controlled by console varaible ogg_volume. Playback controls, such as selecting the track or putting it on pause, are available through the ogg command.
Music playback support is using code adapted from the Yamagi Quake 2 engine.
Photo Mode
When a single player game or demo playback is paused, normally with the pause key, the photo mode activates.
In this mode, denoisers and some other real-time rendering approximations are disabled, and the image is produced
using accumulation rendering instead. This means that the engine renders the same frame hundreds or thousands of times,
with different noise patterns, and averages the results. Once the image is stable enough, you can save a screenshot.
In addition to rendering higher quality images, the photo mode has some unique features. One of them is the
Depth of Field (DoF) effect, which simulates camera aperture and defocus blur, or bokeh. In contrast with DoF effects
used in real-time renderers found in other games, this implementation computes "true" DoF, which works correctly through reflections and refractions, and has no edge artifacts. Unfortunately, it produces a lot of noise instead, so thousands
of frames of accumulation are often needed to get a clean picture. To control DoF in the game, use the mouse wheel and
Shift/Ctrl modifier keys: wheel alone adjusts the focal distance, Shift+Wheel adjusts the aperture size, and Ctrl makes
the adjustments finer.
Another feature of the photo mode is free camera controls. Once the game is paused, you can move the camera and
detach it from the character. To move the camera, use the regular W/A/S/D keys, plus Q/E to move up and down. Shift makes
movement faster, and Ctrl makes it slower. To change orientation of the camera, move the mouse while holding the left
mouse button. To zoom, move the mouse up or down while holding the right mouse button. Finally, to adjust camera roll,
move the mouse left or right while holding both mouse buttons.
Settings for all these features can be found in the game menu. To adjust the settings from the console, see the
pt_accumulation_rendering, pt_dof, pt_aperture, pt_freecam and some other similar console variab
Related Skills
node-connect
326.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
80.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
326.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
80.4kCommit, push, and open a PR
