117

Proceduray -- A light-weight engine for procedural primitive ray tracing

Abstract

A couple of years after its launch, NVidia RTX is established as the standard low-level real-time ray tracing platform. From the start, it came with support for both triangle and procedural primitives. However, the workflow to deal with each primitive type is different in essence. Every triangle geometry uses a built-in intersection shader, resulting in straight-forward shader table creation and indexing, analogous to common practice geometry management in game engines. Conversely, procedural geometry applications use intersection shaders that can be as generic or specific as they demand. For example, an intersection shader can be reused by several different primitive types or can be very specialized to deal with a specific geometry. This flexibility imposes strict design choices regarding hit groups, acceleration structures, and shader tables. The result is the difficulty that current game, graphics, and scientific engines have to integrate RTX procedural geometry (or RTX at all) in their workflow. A symptom of this attrition is the current lack of discussion material about RTX host code development. In this paper, we propose Proceduray, a ray-tracing engine with native support for procedural primitives. We also discuss in detail all design choices behind it, aiming to foment the discussion about RTX host code.

View on arXiv
Comments on this paper