Vulkan Ray Tracing Best Practices for Hybrid Rendering

Danny Chavez

Danny Chavez

Virtual Boy

Today, the Khronos® Vulkan® Working Group has released the final Vulkan Ray Tracing extensions that seamlessly integrate ray tracing functionality alongside Vulkan’s rasterization framework, making Vulkan the industry’s first open, cross-vendor, cross-platform standard for ray tracing acceleration. The final ray tracing functionality is defined by a set of 5 extensions, namely VK_KHR_acceleration_structure, VK_KHR_ray_tracing_pipeline, VK_KHR_ray_query, VK_KHR_pipeline_library, and VK_KHR_deferred_host_operations. ISVs played a pivotal role in shaping the extension to enable hybrid rendering—where rasterization and ray tracing are used in tandem to achieve compelling levels of visual fidelity and interactivity. One example of a game using this hybrid approach in Vulkan is the implementation of ray traced reflections in Wolfenstein: Youngblood, a technique which we will be looking at in-depth in this post, while also discussing more general aspects of real-time ray tracing with Vulkan. Wolfenstein: Youngblood necessarily shipped with an earlier version of Vulkan Ray Tracing extensions, but the techniques used in the game are described here, and can be fully implemented, using the final production extensions that all developers should use now they are available.