  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.
