All Projects → nvpro-samples → Vk_raytracing_tutorial_khr

nvpro-samples / Vk_raytracing_tutorial_khr

Licence: other
Ray tracing examples and tutorials using VK_KHR_ray_tracing

Projects that are alternatives of or similar to Vk raytracing tutorial khr

Vk raytracing tutorial
Vulkan ray tracing tutorials
Stars: ✭ 144 (-68.76%)
Mutual labels:  vulkan, raytracing, tutorial
Vulkan Tutorial Rust
Following the vulkan tutorial(https://vulkan-tutorial.com/) using the Rust programming language.
Stars: ✭ 192 (-58.35%)
Mutual labels:  vulkan, tutorial
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (+364.64%)
Mutual labels:  vulkan, raytracing
awesome-rtx
Curated collection of projects leveraging NVIDIA RTX technology (OptiX, DXR, VKR)
Stars: ✭ 73 (-84.16%)
Mutual labels:  vulkan, raytracing
Raytracedshadows
This demo implements BVH construction and GPU traversal for rendering hard shadows.
Stars: ✭ 107 (-76.79%)
Mutual labels:  vulkan, raytracing
Vulkantutorial
Tutorial for the Vulkan graphics and compute API
Stars: ✭ 1,962 (+325.6%)
Mutual labels:  vulkan, tutorial
Lift
Vulkan Path Tracer with Optix Denoiser integration
Stars: ✭ 30 (-93.49%)
Mutual labels:  vulkan, raytracing
Vulkan Tutorial
This is a series of tutorials on Vulkan, include all example projects which step by step.
Stars: ✭ 56 (-87.85%)
Mutual labels:  vulkan, tutorial
Nabla
OpenGL/OpenGL ES/Vulkan/CUDA/OptiX Modular Rendering Framework for PC/Linux/Android
Stars: ✭ 235 (-49.02%)
Mutual labels:  vulkan, raytracing
vulkan-raytracing
"Simple" Vulkan raytracing
Stars: ✭ 27 (-94.14%)
Mutual labels:  vulkan, raytracing
CLUSEK-RT
Vulkan based C++ ray-tracing game engine.
Stars: ✭ 24 (-94.79%)
Mutual labels:  vulkan, raytracing
Vk raytrace
Ray tracing glTF scene with Vulkan
Stars: ✭ 91 (-80.26%)
Mutual labels:  vulkan, raytracing
Flycube
Graphics API wrapper is written in C++ on top of Directx 12 and Vulkan. Provides main features including ray tracing.
Stars: ✭ 78 (-83.08%)
Mutual labels:  vulkan, raytracing
Gears Vk
Powerful low-level C++20 rendering framework for Vulkan 1.2, including Real-Time Ray Tracing (RTX) support, built atop Auto-Vk.
Stars: ✭ 71 (-84.6%)
Mutual labels:  vulkan, raytracing
Quartz
Vulkan RTX path tracer with a declarative ES7-like scene description language.
Stars: ✭ 367 (-20.39%)
Mutual labels:  vulkan, raytracing
Wickedengine
3D engine focusing on modern rendering techniques and performance.
Stars: ✭ 3,148 (+582.86%)
Mutual labels:  vulkan, raytracing
Vk denoise
Denoising a Vulkan ray traced image using OptiX denoiser
Stars: ✭ 41 (-91.11%)
Mutual labels:  vulkan, raytracing
Raw Vulkan
🔥 Experiments building Vulkan applications, libraries, and abstractions.
Stars: ✭ 42 (-90.89%)
Mutual labels:  vulkan, tutorial
zig-gamedev
Building game development ecosystem for @ziglang!
Stars: ✭ 1,059 (+129.72%)
Mutual labels:  vulkan, raytracing
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (-42.95%)
Mutual labels:  vulkan, raytracing

logo

NVIDIA Vulkan Ray Tracing Tutorials

resultRaytraceShadowMedieval

The focus of this repository and the provided code is to showcase a basic integration of ray tracing and ray traversal within an existing Vulkan sample, using the VK_KHR_acceleration_structure, VK_KHR_ray_tracing_pipeline and VK_KHR_ray_query extensions.

Setup

To be able to compile and run those examples, please follow the setup instructions. Find more over nvpro-samples setup at: https://github.com/nvpro-samples/build_all.

Tutorials

The first tutorial starts from a very simple Vulkan application. It loads a OBJ file and uses the rasterizer to render it. The tutorial then adds, step-by-step, all that is needed to be able to ray trace the scene.


Ray Tracing Tutorial: ▶️ Start Here ◀️


Extra Tutorials

All other tutorials start from the end of the first ray tracing tutorial and also provide step-by-step instructions to modify and add methods and functions for that extra section.

Tutorial Details
small Any Hit Shader
Implements transparent materials by adding a new shader to the Hit group and using the material information to discard hits over time. Adds an anyhit (.ahit) shader to the ray tracing pipeline. Creates simple transparency by randomly letting the ray hit or not.
small Jitter Camera
Anti-aliases the image by accumulating small variations of rays over time. Generates random ray directions. Read/write/accumulates the final image.
img Thousands of Objects
The current example allocates memory for each object, each of which has several buffers. This shows how to get around Vulkan's limits on the total number of memory allocations by using a memory allocator. Extends the limit of 4096 memory allocations. Uses these memory allocators: DMA, VMA.
img Reflections
Reflections can be implemented by shooting new rays from the closest hit shader, or by iteratively shooting them from the raygen shader. This example shows the limitations and differences of these implementations. Calls traceRayEXT() from the closest hit shader (recursive). Adds more data to the ray payload to continue the ray from the raygen shader.
img Multiple Closest Hits Shader and Shader Records
Explains how to add more closest hit shaders, choose which instance uses which shader, add data per SBT that can be retrieved in the shader, and more. One closest hit shader per object. Sharing closest hit shaders for some objects. Passing a shader record to the closest hit shader.
img Animation
This tutorial shows how animating the transformation matrices of the instances (TLAS) and animating the vertices of an object (BLAS) in a compute shader could be done. Refitting top level acceleration structures. Refitting bottom level acceleration structures.
img Intersection Shader
Adds thousands of implicit primitives and uses an intersection shader to render spheres and cubes. Explains what is needed to get procedural hit group working. Intersection Shaders. Sphere intersection. Axis aligned bounding box intersection.
img Callable Shader
Replacing if/else by callable shaders. The code to execute the lighting is done in separate callable shaders instead of being part of the main code. Adding multiple callable shaders. Calling ExecuteCallableEXT from the closest hit shader.
img Ray Query
Invokes ray intersection queries directly from the fragment shader to cast shadow rays. Ray tracing directly from the fragment shader.
img glTF Scene
Instead of loading separate OBJ objects, the example was modified to load glTF scene files containing multiple objects. This example is not about shading, but using more complex data than OBJ. However, it also shows a basic path tracer implementation.
img Advance
An example combining most of the above samples in a single application.
img Trace Rays Indirect
Teaches the use of vkCmdTraceRaysIndirectKHR, which sources width/height/depth from a buffer. As a use case, we add lanterns to the scene and use a compute shader to calculate scissor rectangles for each of them.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].