IP Library Granted Patent US 11,676,327
Granted Patent B2
US 11,676,327 · App. 17/205,680 · Granted Jun 13, 2023

Temporal split techniques for motion blur and ray intersection

Inventors: Christopher A. Burns (Austin, TX); Ali Rabbani Rankouhi (Bushey, GB); Justin A. Hensley (Mountain View, CA); Richard W. Schreyer (Scotts Valley, CA)
Assignee: Apple Inc.
G06T15/06G06F16/9027G06T15/005
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,676,327
App. No.
17/205,680
Filed
Mar 18, 2021
Granted
Jun 13, 2023
Kind
B2
Art Unit
2619
USPC
345/426
Abstract

Techniques are disclosed relating to ray intersection in the context of motion blur. In some embodiments, a graphics processor includes time-oblivious ray intersect circuitry configured to receive coordinates for a ray and traverse a bounding volume hierarchy (BVH) data structure based on the coordinates to determine whether the ray intersects with one or more bounding regions of a graphics space. In some embodiments, in response to reaching a temporal branch element of the BVH data structure, the ray intersect circuitry initiates a shader program that determines a sub-tree of the BVH data structure for further traversal by the ray intersection circuitry, where the sub-tree corresponds to a portion of a motion-blur interval in which the ray falls. This may provide accurate ray tracing for motion blur while reducing area and power consumption of intersect circuitry, relative to time-aware implementations.

Claims (57)

1. An apparatus, comprising:

shader circuitry configured to:

execute a shader program to generate a bounding volume hierarchy (BVH) data structure, including to:

for multiple levels of the BVH data structure, when generating multiple child elements for a node at one level, determine whether to perform a temporal split or a non-temporal split, wherein to determine whether to perform a temporal split or a non-temporal split, the shader circuitry is configured to:

determine a cost of a temporal split for the node based on: bounding region surface area, number of primitives to be enclosed, duration of time interval to be enclosed for one or more sub-trees, and an estimated overhead cost associated with evaluation of a temporal split during traversal; and

compare the determined cost with a cost of one or more other candidate splits for the node; and

insert one or more temporal branch elements for one or more determined temporal splits.

2. The apparatus of claim 1 , further comprising:

ray intersect circuitry configured to:

receive coordinates for a ray; and

traverse the BVH data structure based on the coordinates.

3. The apparatus of claim 2 , wherein:

the ray intersect circuitry is time oblivious and is configured to:

perform tests using bounding region test circuitry to determine whether the ray intersects with multiple spatial bounding regions of a graphics space; and

in response to reaching a temporal branch element of the BVH data structure, initiate a shader program to execute on the shader circuitry.

4. The apparatus of claim 3 , wherein the shader circuitry is configured to execute the shader program to:

determine a first bounding region corresponding to a beginning of a time interval associated with the temporal branch element and a second bounding region corresponding to an end of the time interval;

interpolate between the first and second bounding regions, based on a time value for the ray, to determine an interpolated bounding region; and

determine whether to initiate further traversal based on whether the ray intersects the interpolated bounding region.

5. The apparatus of claim 4 , wherein the first and second bounding regions are stored in a data structure for the temporal branch element of the BVH data structure.

6. The apparatus of claim 2 , wherein the ray intersect circuitry is further configured to:

in response to reaching a leaf node of the sub-tree of the BVH data structure, initiate a shader program to determine whether the ray intersects one or more moving primitives.

7. The apparatus of claim 1 , wherein the BVH data structure includes a primitive data structure representing at least beginning and end coordinates for a moving primitive, wherein multiple different sub-trees point to the primitive data structure, wherein the multiple different sub-trees represent different portions of a motion blur time interval.

8. The apparatus of claim 1 , wherein the BVH data structure includes temporal branch elements at multiple levels such that a first temporal branch element at a first level defines a first sub-tree that is divided into multiple sub-trees by a second temporal branch element at a second level.

9. The apparatus of claim 1 , wherein the BVH data structure has a first branching factor for one or more non-temporal splits and wherein a temporal branch element has a second branching factor that is different than the first branching factor.

10. A method, comprising:

generating, by a computing device, a bounding volume hierarchy (BVH) data structure, including:

for multiple levels of the BVH data structure, when generating multiple child elements for a node at one level, determining whether to perform a temporal split or a non-temporal split; and

inserting one or more temporal branch elements for one or more determined temporal splits, including determining whether to perform a temporal split or a non-temporal split based on:

determining a cost of a temporal split for the node, wherein the cost is based on: bounding region surface area, number of primitives to be enclosed, duration of time interval to be enclosed for one or more sub-trees, and an estimated overhead cost associated with evaluation of a temporal split during traversal; and

comparing the determined cost with a cost of one or more other candidate splits for the node.

11. The method of claim 10 , further comprising:

receiving, by ray intersect circuitry of the computing device from shader circuitry of the computing device, coordinates for a ray; and

traversing, by the ray intersect circuitry, the BVH data structure based on the coordinates.

12. The method of claim 11 , wherein the ray intersect circuitry is time oblivious, the method further comprising:

the ray intersect circuitry performing tests using bounding region test circuitry to determine whether the ray intersects with multiple spatial bounding regions of a graphics space; and

in response to reaching a temporal branch element of the BVH data structure, the ray intersect circuitry initiating a shader program to execute on the shader circuitry.

13. The method of claim 10 , further comprising, during a traversal of the BVH data structure:

determining a first bounding region corresponding to a beginning of a time interval associated with a temporal branch element and a second bounding region corresponding to an end of the time interval;

interpolating between the first and second bounding regions, based on a time value for a given ray, to determine an interpolated bounding region; and

determining whether to initiate further traversal based on whether a given ray intersects the interpolated bounding region.

14. The method of claim 13 , wherein the first and second bounding regions are stored in a data structure for the temporal branch element of the BVH data structure.

15. The method of claim 10 , wherein the BVH data structure includes a primitive data structure representing at least beginning and end coordinates for a moving primitive, wherein multiple different sub-trees point to the primitive data structure, wherein the multiple different sub-trees represent different portions of a motion blur time interval.

16. A non-transitory computer-readable medium having instructions stored thereon that are executable by a computing device to perform operations comprising:

generating a bounding volume hierarchy (BVH) data structure, including:

for multiple levels of the BVH data structure, when generating multiple child elements for a node at one level, determining whether to perform a temporal split or a non-temporal split; and

inserting one or more temporal branch elements for one or more determined temporal splits, including determining whether to perform a temporal split or a non-temporal split based on:

determining a cost of a temporal split for the node, wherein the cost is based on: bounding region surface area, number of primitives to be enclosed, duration of time interval to be enclosed for one or more sub-trees, and an estimated overhead cost associated with evaluation of a temporal split during traversal; and

comparing the determined cost with a cost of one or more other candidate splits for the node.

17. The non-transitory computer-readable medium of claim 16 , wherein the operations further comprise:

receiving, by ray intersect circuitry of the computing device from shader circuitry of the computing device, coordinates for a ray, wherein the coordinates for the ray are generated by the shader circuitry in response to executing a ray intersect instruction of the instructions; and

traversing, by the ray intersect circuitry, the BVH data structure based on the coordinates.

18. The non-transitory computer-readable medium of claim 17 , wherein the operations further comprise:

the ray intersect circuitry performing tests using bounding region test circuitry to determine whether the ray intersects with multiple spatial bounding regions of a graphics space; and

in response to reaching a temporal branch element of the BVH data structure, the ray intersect circuitry initiating a shader program to execute on the shader circuitry.

19. The non-transitory computer-readable medium of claim 16 , wherein the BVH data structure includes a primitive data structure representing at least beginning and end coordinates for a moving primitive, wherein multiple different sub-trees point to the primitive data structure, wherein the multiple different sub-trees represent different portions of a motion blur time interval.

20. The non-transitory computer-readable medium of claim 16 , wherein the BVH data structure includes temporal branch elements at multiple levels such that a first temporal branch element at a first level defines a first sub-tree that is divided into multiple sub-trees by a second temporal branch element at a second level.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2021
From: BURNS, CHRISTOPHER A.; RABBANI RANKOUHI, ALI; HENSLEY, JUSTIN A.; SCHREYER, RICHARD W.
To: APPLE INC.
Reel/Frame 055641/0092 →
Continuity (1)
Related Publication 20220301254A1 · Sep 22, 2022
Cited By (2)
US 12,694,605 US 12,743,840