Variable rate BVH traversal
A technique for performing ray tracing operations is provided. The technique includes, submitting a plurality of intersection test requests to an intersection test unit, wherein the plurality of intersection test requests are submitted prior to receiving results of any of the intersection test requests from the intersection test unit.
1 . A method for performing ray tracing operations, the method comprising:
identifying a plurality of child nodes that are children of a particular node in a bounding volume hierarchy (BVH);
submitting, in parallel and prior to receiving any results of the intersection tests, a plurality of requests for intersection tests of a ray, wherein each of the plurality of requests corresponds to a test for an intersection of the ray with a respective child node among the plurality of the child nodes; and
in response to receiving results of the intersection tests, determining which of the child nodes are indicated as intersected by the ray.
2 . The method of claim 1 , further comprising:
in response to the results of the intersection tests, submitting a read request for triangle node data to a memory system, wherein the triangle node data comprises data for coloring the ray.
3 . The method of claim 2 , wherein the triangle node data comprises a cache line with data for a plurality of triangle nodes.
4 . The method of claim 3 , wherein the intersection tests require access to the bounding volume hierarchy.
5 . The method of claim 4 , wherein the bounding volume hierarchy comprises unordered triangle node leaves.
6 . The method of claim 4 , wherein the bounding volume hierarchy comprises ordered triangle node leaves.
7 . The method of claim 6 , wherein the cache line comprises data for a plurality of consecutive triangle leaf nodes.
8 . The method of claim 7 , wherein the intersection tests are performed using a pipelined architecture.
9 . The method of claim 1 , wherein the ray is associated with a wavefront of work-items executing in a single-instruction-multiple-data (SIMD) processing unit, and submitting, in parallel, the plurality of requests for intersection tests comprises generating, from the wavefront, a plurality of transactions each corresponding to a respective active lane of the wavefront.
10 . A system for performing ray tracing operations, the system comprising:
a memory configured to store instructions; and
one or more processors communicatively coupled to the memory, wherein the one or more processors are collectively configured to:
identify a plurality of child nodes that are children of a particular node in a bounding volume hierarchy (BVH);
submit, in parallel and prior to receiving any results of the intersection tests, a plurality of requests for intersection tests of a ray, wherein each of the plurality of requests corresponds to a test for an intersection of the ray with a respective child node among the plurality of the child nodes; and
in response to receiving results of the intersection tests, determine which of the child nodes are indicated as intersected by the ray.
11 . The system of claim 10 , wherein the one or more processors are further collectively configured to:
in response to the results of the intersection tests, submit at least one read request for triangle node data to a memory system, wherein the triangle node data comprises data for coloring a ray.
12 . The system of claim 11 , wherein the triangle node data comprises a cache line with data for a plurality of triangle nodes.
13 . The system of claim 12 , wherein the intersection tests require access to the bounding volume hierarchy.
14 . The system of claim 13 , wherein the bounding volume hierarchy comprises unordered triangle node leaves.
15 . The system of claim 13 , wherein the bounding volume hierarchy comprises ordered triangle node leaves.
16 . The system of claim 15 , wherein the cache line comprises data for a plurality of consecutive triangle leaf nodes.
17 . The system of claim 16 , wherein the intersection tests are performed using a pipelined architecture.
18 . The system of claim 10 , wherein the one or more processors comprise at least one SIMD processing unit configured to execute wavefronts of work-items, and the one or more processors are configured to generate the plurality of requests for intersection tests based on active lanes of a wavefront associated with the ray.
19 . A non-transitory computer-readable medium storing instructions that when executed by a processor cause the processor to perform operations including:
identifying a plurality of child nodes that are children of a particular node in a bounding volume hierarchy (BVH);
submitting, in parallel and prior to receiving any results of the intersection tests, a plurality of requests for intersection tests of a ray, wherein each of the plurality of requests corresponds to a test for an intersection of the ray with a respective child node among the plurality of the child nodes; and
in response to receiving results of the intersection tests, determining which of the child nodes are indicated as intersected by the ray.
20 . The non-transitory computer-readable medium of claim 19 , wherein the operations further include:
in response to the results of the intersection tests, submitting at least one read request for triangle node data to a memory system, wherein the triangle node data comprises data for coloring the ray.