Systems and methods for concurrent ray tracing
AssigneeCaustic Graphics, Inc.
InventorsLuke Tilman Peterson, James Alexander McCombe, Ryan R. Salsbury
Life of this patent
Estimating the term…
Abstract
For ray tracing scenes composed of primitives, systems and methods can traverse rays through an acceleration structure. The traversal can be implemented by concurrently testing a plurality of nodes of the acceleration structure for intersection with a sequence of one or more rays. Such testing can occur in a plurality of test cells. Leaf nodes of the acceleration structure can bound primitives, and a sequence primitives can be tested concurrently for intersection in the test cells against a plurality of rays that have intersected a given leaf node. Intersection testing of a particular leaf node can be deferred until a sufficient quantity of rays have been collected for that node.
Claims23
A method of ray tracing, comprising:
- accessing an acceleration structure for a 3-D scene that is composed of primitives and in which rays are to be traced, the acceleration structure comprising a plurality of nodes, each defining a surface bounding a volume in the 3-D scene;
- receiving a plurality of rays;
- identifying a plurality of nodes of the acceleration structure to be tested for intersection with a selection of one or more of the rays;
- loading definition data for different of the plurality of nodes into different test cells of a plurality of test cells;
- testing, in its respective test cell, each of the nodes for intersection with each ray of the selection of rays;
- and
- outputting results of the intersection testing.
A method of ray tracing, comprising:
- traversing a plurality of rays through an acceleration structure comprising leaf nodes that each bound a respective selection of primitives composing a 3-D scene, the traversal implemented by testing rays for intersection with nodes of the acceleration structure, and producing an association of each ray with each leaf node which that ray was determined to intersect;
- fetching primitives bounded by a leaf node that is associated with multiple of the rays;
- loading the primitives into respective test cells of a plurality of test cells;
- and
- testing each of the primitives for intersection with each of the rays by cycling the multiple rays through the test cells and responsively generating intersection test results.
A method of ray tracing, comprising:
- accessing an acceleration structure for a 3-D scene that is composed of primitives and in which rays are to be traced, the acceleration structure comprising a plurality of nodes, each defining a surface bounding a volume in the 3-D scene, the acceleration structure comprising leaf nodes whose surfaces bound respective selections of the primitives;
- storing definition data for a plurality of rays in a first memory;
- identifying each of the rays by a respective ray identifier;
- tracking, using the ray identifiers, which rays are to be tested for intersection with which of the nodes of the acceleration structure;
- accessing the definition data from the memory based on the ray identifiers;
- concurrently testing each of the identified rays with a plurality of acceleration structure nodes, against which such ray is to be tested;
- and
- outputting results of the testing.
A system for ray tracing, comprising:
- a memory storing an acceleration structure for a 3-D scene that is composed of primitives and in which rays are to be traced, the acceleration structure comprising a plurality of nodes, each defining a surface bounding a volume in the 3-D scene, the acceleration structure comprising leaf nodes whose surfaces bound respective selections of the primitives, and non-leaf nodes that each respectively bound a plurality of other nodes;
- a plurality of test cells, each configurable to test a ray for intersection with a node of the acceleration structure;
- and
- a controller configured for
- traversing a plurality of rays through the acceleration structure by iteratively loading subsets of the nodes into the test cells, and providing one or more rays to be concurrently tested with the nodes loaded into the test cells,
- the controller further configured, for leaf nodes,
- for collecting each ray into respective collections associated with each leaf node determined to be intersected by that ray, and
- for initiating testing of the rays of a collection with the primitives bounded by its associated leaf node surface by distributing the collected rays among the test cells and cycling the primitives through the test cells.
A system comprising one or more articles of computer readable media storing computer readable data and code, comprising:
- data representative of an acceleration structure for a 3-D scene that is composed of primitives and in which rays are to be traced, the acceleration structure comprising parent nodes that each have two or more child nodes, some of the child nodes being leaf nodes that each bound a respective selection of primitives composing the 3-D scene;
- and
- computer executable code for identifying at least one ray that has intersected a parent node of the acceleration structure, loading the child nodes for that acceleration structure into respective testers for concurrent testing of the nodes for intersection with each of the one or more rays by cycling each ray through the test cells, and outputting results of the intersection testing.
Dependencies are inferred from the claim text.