<?xml version='1.0' encoding='utf-8'?>
<genxml name="RT" gen="12.5">
  <struct name="BINDLESS_SHADER_RECORD" length="2">
    <field name="Offset To Local Arguments" dword="0" bits="2:0" type="uint" />
    <field name="Bindless Shader Dispatch Mode" dword="0" bits="4:4" type="uint">
      <value name="RT_SIMD16" value="0" />
      <value name="RT_SIMD8" value="1" />
    </field>
    <field name="Kernel Start Pointer" dword="0" bits="31:6" type="offset" />
  </struct>
  <struct name="RT_BVH_VEC3" length="3">
    <field name="X" dword="0" bits="31:0" type="float" />
    <field name="Y" dword="1" bits="31:0" type="float" />
    <field name="Z" dword="2" bits="31:0" type="float" />
  </struct>
  <struct name="RT_BVH_METADATA" length="16">
    <field name="Bounds Min" dword="0" bits="95:0" type="RT_BVH_VEC3" />
    <field name="Bounds Max" dword="3" bits="95:0" type="RT_BVH_VEC3" />
  </struct>
  <struct name="RT_BVH" length="32">
    <field name="Root Node Offset" dword="0" bits="63:0" type="offset" />
    <field name="Meta" dword="16" bits="511:0" type="RT_BVH_METADATA" />
  </struct>
  <struct name="RT_BVH_INSTANCE_LEAF" length="32">
    <field name="Shader Index" dword="0" bits="23:0" type="uint" />
    <field name="Geometry Ray Mask" dword="0" bits="31:24" type="uint" />
    <field name="Instance Contribution To Hit Group Index" dword="1" bits="23:0" type="uint" />
    <field name="Leaf Type" dword="1" bits="29:29" type="uint">
      <value name="TYPE_OPAQUE_CULLING_ENABLED" value="0" />
      <value name="TYPE_OPAQUE_CULLING_DISABLED" value="1" />
    </field>
    <field name="Geometry Flags" dword="1" bits="31:30" type="uint">
      <value name="GEOMETRY_OPAQUE" value="1" />
    </field>
    <field name="Start Node Address" dword="2" bits="47:0" type="address" />
    <field name="Instance Flags" dword="3" bits="23:16" type="uint">
      <value name="TRIANGLE_CULL_DISABLE" value="1" />
      <value name="TRIANGLE_FRONT_COUNTERCLOCKWISE" value="2" />
      <value name="FORCE_OPAQUE" value="4" />
      <value name="FORCE_NON_OPAQUE" value="8" />
    </field>
    <field name="World To Object m00" dword="4" bits="31:0" type="float" />
    <field name="World To Object m01" dword="5" bits="31:0" type="float" />
    <field name="World To Object m02" dword="6" bits="31:0" type="float" />
    <field name="World To Object m10" dword="7" bits="31:0" type="float" />
    <field name="World To Object m11" dword="8" bits="31:0" type="float" />
    <field name="World To Object m12" dword="9" bits="31:0" type="float" />
    <field name="World To Object m20" dword="10" bits="31:0" type="float" />
    <field name="World To Object m21" dword="11" bits="31:0" type="float" />
    <field name="World To Object m22" dword="12" bits="31:0" type="float" />
    <field name="Object To World m30" dword="13" bits="31:0" type="float" />
    <field name="Object To World m31" dword="14" bits="31:0" type="float" />
    <field name="Object To World m32" dword="15" bits="31:0" type="float" />
    <field name="BVH Address" dword="16" bits="47:0" type="address" />
    <field name="Instance ID" dword="18" bits="31:0" type="uint" />
    <field name="Instance Index" dword="19" bits="31:0" type="uint" />
    <field name="Object To World m00" dword="20" bits="31:0" type="float" />
    <field name="Object To World m01" dword="21" bits="31:0" type="float" />
    <field name="Object To World m02" dword="22" bits="31:0" type="float" />
    <field name="Object To World m10" dword="23" bits="31:0" type="float" />
    <field name="Object To World m11" dword="24" bits="31:0" type="float" />
    <field name="Object To World m12" dword="25" bits="31:0" type="float" />
    <field name="Object To World m20" dword="26" bits="31:0" type="float" />
    <field name="Object To World m21" dword="27" bits="31:0" type="float" />
    <field name="Object To World m22" dword="28" bits="31:0" type="float" />
    <field name="World To Object m30" dword="29" bits="31:0" type="float" />
    <field name="World To Object m31" dword="30" bits="31:0" type="float" />
    <field name="World To Object m32" dword="31" bits="31:0" type="float" />
  </struct>
  <struct name="RT_BVH_INTERNAL_NODE" length="16">
    <field name="Origin" dword="0" bits="95:0" type="RT_BVH_VEC3" />
    <field name="Child Offset" dword="3" bits="31:0" type="int" />
    <field name="Node Type" dword="4" bits="7:0" type="uint" prefix="NODE_TYPE">
      <value name="INTERNAL" value="0" />
      <value name="INSTANCE" value="1" />
      <value name="PROCEDURAL" value="3" />
      <value name="QUAD" value="4" />
      <value name="INVALID" value="7" />
    </field>
    <field name="Child Bounds Exponent X" dword="4" bits="23:16" type="int" />
    <field name="Child Bounds Exponent Y" dword="4" bits="31:24" type="int" />
    <field name="Child Bounds Exponent Z" dword="5" bits="8:0" type="int" />
    <field name="Node Ray Mask" dword="5" bits="15:8" type="uint" />
    <group count="6" dword="5" offset_bits="16" size="8">
      <field name="Child Size" dword="0" bits="1:0" type="uint" />
      <field name="Child Type" dword="0" bits="5:2" type="uint" />
      <field name="Start Primitive" dword="0" bits="5:2" type="uint" />
    </group>
    <group count="6" dword="7" size="8">
      <field name="Child Lower X Bound" dword="0" bits="7:0" type="uint" />
    </group>
    <group count="6" dword="8" offset_bits="16" size="8">
      <field name="Child Upper X Bound" dword="0" bits="7:0" type="uint" />
    </group>
    <group count="6" dword="10" size="8">
      <field name="Child Lower Y Bound" dword="0" bits="7:0" type="uint" />
    </group>
    <group count="6" dword="11" offset_bits="16" size="8">
      <field name="Child Upper Y Bound" dword="0" bits="7:0" type="uint" />
    </group>
    <group count="6" dword="13" size="8">
      <field name="Child Lower Z Bound" dword="0" bits="7:0" type="uint" />
    </group>
    <group count="6" dword="14" offset_bits="16" size="8">
      <field name="Child Upper Z Bound" dword="0" bits="7:0" type="uint" />
    </group>
  </struct>
  <struct name="RT_BVH_PRIMITIVE_LEAF_DESCRIPTOR" length="2">
    <field name="Shader Index" dword="0" bits="23:0" type="uint" />
    <field name="Geometry Ray Mask" dword="0" bits="31:24" type="uint" />
    <field name="Geometry Index" dword="1" bits="28:0" type="uint" />
    <field name="Leaf Type" dword="1" bits="29:29" type="uint">
      <value name="TYPE_QUAD" value="0" />
      <value name="TYPE_OPAQUE_CULLING_ENABLED" value="0" />
      <value name="TYPE_OPAQUE_CULLING_DISABLED" value="1" />
    </field>
    <field name="Geometry Flags" dword="1" bits="31:30" type="uint">
      <value name="GEOMETRY_OPAQUE" value="1" />
    </field>
  </struct>
  <struct name="RT_BVH_PROCEDURAL_LEAF" length="16">
    <field name="Leaf Descriptor" dword="0" bits="63:0" type="RT_BVH_PRIMITIVE_LEAF_DESCRIPTOR" />
    <field name="Num Primitives" dword="2" bits="3:0" type="uint" />
    <field name="Last Primitive" dword="2" bits="31:19" type="uint" />
    <group count="13" dword="3" size="32">
      <field name="Primitive Index" dword="0" bits="31:0" type="uint" />
    </group>
  </struct>
  <struct name="RT_BVH_QUAD_LEAF" length="16">
    <field name="Leaf Descriptor" dword="0" bits="63:0" type="RT_BVH_PRIMITIVE_LEAF_DESCRIPTOR" />
    <field name="Primitive Index 0" dword="2" bits="31:0" type="uint" />
    <field name="Primitive Index 1 Delta" dword="3" bits="16:0" type="uint" />
    <field name="j0" dword="3" bits="17:16" type="uint" />
    <field name="j1" dword="3" bits="19:18" type="uint" />
    <field name="j2" dword="3" bits="21:20" type="uint" />
    <field name="Last Quad" dword="3" bits="22:22" type="bool" />
    <group count="4" dword="4" size="96">
      <field name="Quad Vertex" dword="0" bits="95:0" type="RT_BVH_VEC3" />
    </group>
  </struct>
  <struct name="RT_SHADER_TABLE" length="2">
    <field name="Base Address" dword="0" bits="47:0" type="address" />
    <field name="Stride" dword="1" bits="31:16" type="uint" />
  </struct>
  <struct name="RT_DISPATCH_GLOBALS" length="20">
    <field name="Mem Base Address" dword="0" bits="63:0" type="address" />
    <field name="Call Stack Handler" dword="2" bits="63:0" type="BINDLESS_SHADER_RECORD" />
    <field name="Async RT Stack Size" dword="4" bits="31:0" type="uint" />
    <field name="Num DSS RT Stacks" dword="5" bits="15:0" type="uint" />
    <field name="Max BVH Levels" dword="6" bits="2:0" type="uint" />
    <field name="Flags" dword="7" bits="0:0" type="uint">
      <value name="RT_DEPTH_TEST_LESS_EQUAL" value="1" />
    </field>
    <field name="Hit Group Table" dword="8" bits="63:0" type="RT_SHADER_TABLE" />
    <field name="Miss Group Table" dword="10" bits="63:0" type="RT_SHADER_TABLE" />
    <field name="SW Stack Size" dword="12" bits="31:0" type="uint" />
    <field name="Launch Width" dword="13" bits="31:0" type="uint" />
    <field name="Launch Height" dword="14" bits="31:0" type="uint" />
    <field name="Launch Depth" dword="15" bits="31:0" type="uint" />
    <field name="Callable Group Table" dword="16" bits="63:0" type="RT_SHADER_TABLE" />
    <field name="Resume Shader Table" dword="18" bits="63:0" type="address" />
  </struct>
  <struct name="RT_GENERAL_SBT_HANDLE" length="8">
    <field name="General" dword="0" bits="63:0" type="BINDLESS_SHADER_RECORD" />
  </struct>
  <struct name="RT_PROCEDURAL_SBT_HANDLE" length="8">
    <field name="Closest Hit" dword="0" bits="63:0" type="BINDLESS_SHADER_RECORD" />
    <field name="Intersection" dword="2" bits="63:0" type="BINDLESS_SHADER_RECORD" />
  </struct>
  <struct name="RT_TRIANGLES_SBT_HANDLE" length="8">
    <field name="Closest Hit" dword="0" bits="63:0" type="BINDLESS_SHADER_RECORD" />
    <field name="Any Hit" dword="2" bits="63:0" type="BINDLESS_SHADER_RECORD" />
  </struct>
</genxml>
