Coherency Gathering for Ray Tracing
AssigneeImagination Technologies Limited
InventorsMichael John Livesley, Greg Clark
Life of this patent
Estimating the term…
Abstract
A system and method for coherency gathering for rays in a ray tracing system. The ray tracing system uses a hierarchical acceleration structure comprising a plurality of nodes including upper level nodes and lower level nodes. For each instance where one of the lower level nodes is a child of one of the upper level nodes, an instance transform is defined, specifying the relationship between a first coordinate system of the upper level node and the second coordinate system for that instance of the lower level node. The system provides an instance transform cache for storing a plurality of these instance transforms while conducting intersection testing.
Claims20
A method of coherency gathering for rays in a ray tracing system, the method comprising:
- defining a plurality of rays, each ray having associated with it ray information defining the ray in a first coordinate system,
- defining a hierarchical acceleration structure comprising a plurality of nodes including upper level nodes and lower level nodes, each node of the acceleration structure having geometry information associated with it, wherein the geometry information of the upper level nodes is defined in the first coordinate system and the geometry information of each of the lower level nodes is defined in a second coordinate system different from the first coordinate system,
- wherein the lower level nodes are instantiated within the acceleration structure in one or more instances, each instance associated with an instance transform specifying the relationship between the first coordinate system and the respective second coordinate system for that instance,
- the method further comprising:
- storing the geometry information and the instance transforms in a memory;
- gathering together a plurality of groups of rays, wherein each group requires intersection testing against a respective node in the hierarchical acceleration structure;
- selecting one of the groups for intersection testing, wherein the respective node to be tested against is an instance of a lower level node;
- searching an instance transform cache for the instance transform of that instance;
- if the instance transform is found in the instance transform cache,
- submitting the selected group of rays for intersection testing, and
- if the instance transform is not found in the instance transform cache:
- retrieving the instance transform and loading it into the instance transform cache;
- and
- submitting the selected group of rays for intersection testing.
A system for coherency gathering for rays in a ray tracing system, the system comprising:
- a ray store, configured to store ray information of a plurality of rays, the ray information for each ray defining the ray in a first coordinate system;
- a memory, configured to store:
- geometry information associated with each of a plurality of nodes of a hierarchical acceleration structure, the plurality of nodes including upper level nodes and lower level nodes, wherein the geometry information of the upper level nodes is defined in the first coordinate system and the geometry information of each of the lower level nodes is defined in a second coordinate system different from the first coordinate system, wherein the lower level nodes are instantiated within the acceleration structure in one or more instances, each instance associated with an instance transform specifying the relationship between the first coordinate system and the respective second coordinate system for that instance,
- the memory being further configured to store the instance transforms;
- an instance transform cache, configured to temporarily store instance transforms;
- and
- a coherency gathering unit, configured to:
- gather together a plurality of groups of rays, wherein each group requires intersection testing against a respective node in the hierarchical acceleration structure;
- select one of the groups for intersection testing, wherein the respective node to be tested against is an instance of a lower level node;
- search the instance transform cache for the instance transform of that instance of that lower level node;
- if the instance transform is found in the instance transform cache,
- submit the selected group of rays for intersection testing, and
- if the instance transform is not found in the instance transform cache:
- retrieve the instance transform and load it into the instance transform cache;
- and
- submit the selected group of rays for intersection testing.
Dependencies are inferred from the claim text.