A real-time ray tracer implementing Peter Shirley's 'Ray Tracing in One Weekend' using Vulkan and NVIDIA RTX extensions.
Ray Tracing in Vulkan is an open-source implementation of Peter Shirley's 'Ray Tracing in One Weekend' book series, adapted to use the Vulkan graphics API and NVIDIA's RTX ray tracing extensions. It provides a real-time, interactive ray tracer that demonstrates how to leverage modern GPU hardware for accelerated rendering, supporting both procedural geometry and OBJ mesh loading.
Graphics programmers, Vulkan developers, and students interested in learning real-time ray tracing techniques and GPU-accelerated rendering pipelines.
It offers a practical, performance-oriented example of translating classic CPU ray tracing algorithms to a real-time Vulkan context, showcasing the significant speed gains possible with hardware-accelerated ray tracing on RTX-capable GPUs.
Implementation of Peter Shirley's Ray Tracing In One Weekend book using Vulkan and NVIDIA's RTX extension.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Vulkan's ray tracing pipeline to achieve interactive frame rates, such as 140fps on an RTX 2080 Ti for the cover scene, demonstrating significant speed gains over CPU implementations.
Translates Peter Shirley's classic CPU ray tracing algorithms to Vulkan, providing a practical, hands-on resource for learning modern GPU ray tracing APIs and techniques.
Supports both procedural geometry from the original books and OBJ mesh loading, allowing experimentation with diverse scene types, as shown in the gallery with spheres and Lucy statues.
Includes a Dear ImGui-based UI for adjusting renderer settings on the fly, enabling real-time experimentation and easier debugging during development.
The README explicitly states there is no denoising filter, unlike projects like Q2VKPT, leading to noisy images during camera movement and limiting visual quality in dynamic scenes.
Requires GPUs with Vulkan ray tracing extensions (e.g., NVIDIA RTX or AMD RDNA2), making it incompatible with older hardware like GTX series, as evidenced by poor benchmark performance on a GTX 1080 Ti.
The author admits naive implementation decisions, such as separate instances for each object and duplicated geometry instead of instancing, which can hurt data locality and performance, as noted in the 'Performance' section.