Class NVRayTracing

java.lang.Object
org.lwjgl.vulkan.NVRayTracing

public class NVRayTracing extends Object
Rasterization has been the dominant method to produce interactive graphics, but increasing performance of graphics hardware has made ray tracing a viable option for interactive rendering. Being able to integrate ray tracing with traditional rasterization makes it easier for applications to incrementally add ray traced effects to existing applications or to do hybrid approaches with rasterization for primary visibility and ray tracing for secondary queries.

To enable ray tracing, this extension adds a few different categories of new functionality:

  • Acceleration structure objects and build commands
  • A new pipeline type with new shader domains
  • An indirection table to link shader groups with acceleration structure items

This extension adds support for the following SPIR-V extension in Vulkan:

  • SPV_NV_ray_tracing
Sample Code

Example ray generation GLSL shader


 #version 450 core
 #extension GL_NV_ray_tracing : require
 layout(set = 0, binding = 0, rgba8) uniform image2D image;
 layout(set = 0, binding = 1) uniform accelerationStructureNV as;
 layout(location = 0) rayPayloadNV float payload;
 
 void main()
 {
    vec4 col = vec4(0, 0, 0, 1);
 
    vec3 origin = vec3(float(gl_LaunchIDNV.x)/float(gl_LaunchSizeNV.x), float(gl_LaunchIDNV.y)/float(gl_LaunchSizeNV.y), 1.0);
    vec3 dir = vec3(0.0, 0.0, -1.0);
 
    traceNV(as, 0, 0xff, 0, 1, 0, origin, 0.0, dir, 1000.0, 0);
 
    col.y = payload;
 
    imageStore(image, ivec2(gl_LaunchIDNV.xy), col);
 }
Name String
VK_NV_ray_tracing
Extension Type
Device extension
Registered Extension Number
166
Revision
3
Extension and Version Dependencies
VK_KHR_get_physical_device_properties2 and VK_KHR_get_memory_requirements2 or Version 1.1
API Interactions
  • Interacts with VK_VERSION_1_1
  • Interacts with VK_EXT_debug_report
  • Interacts with VK_KHR_get_memory_requirements2
SPIR-V Dependencies
Deprecation State
Contact
Other Extension Metadata
Last Modified Date
2018-11-20
Interactions and External Dependencies
Contributors
  • Eric Werness, NVIDIA
  • Ashwin Lele, NVIDIA
  • Robert Stepinski, NVIDIA
  • Nuno Subtil, NVIDIA
  • Christoph Kubisch, NVIDIA
  • Martin Stich, NVIDIA
  • Daniel Koch, NVIDIA
  • Jeff Bolz, NVIDIA
  • Joshua Barczak, Intel
  • Tobias Hector, AMD
  • Henrik Rydgard, NVIDIA
  • Pascal Gautron, NVIDIA