I've been implementing a path tracer in Vulkan using the VK_ray_tracing extension and am a bit confused on how to set up the pipeline. Currently I've been following the style of the Reference Path Tracer in Chapter 14 of Ray Tracing Gems II. Basically, having the raygen be an uber shader that does all of the iterative ray bounces and material calculations.

I've also heard of using a wavefront ray tracing approach for handling the different shader stages in hopes of getting better utilization.

In terms of implementing a path tracer, which approach is better from a performance perspective? Does the setup of VK_ray_tracing with hardware ray tracing invalidate the need for manually formulating the pathtracing in a wavefront manner or could it still benefit from that setup over a "naive" uber shader approach.

  • 1
    $\begingroup$ My path tracer, based on Sascha Willems' raytracingreflections demo, is at: github.com/sjhalayka/bidirectional_path_tracer $\endgroup$ Feb 14 at 23:05
  • $\begingroup$ So I see you've also done it in the Uber shader style $\endgroup$ Feb 15 at 17:27
  • $\begingroup$ Yes sir/ma'am, yes. I have one raygen shader. In any case, the pipeline code is there for the taking. $\endgroup$ Feb 15 at 17:30


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.