IP Library Granted Patent US 11,164,360
Granted Patent B2
US 11,164,360 · App. 16/919,700 · Granted Nov 2, 2021

Method for handling of out-of-order opaque and alpha ray/primitive intersections

Inventors: Samuli Laine (Uusimaa, FI); Tero Karras (Uusimaa, FI); Greg Muthler (Austin, TX); William Parsons Newhall (Woodside, CA); Ronald Charles Babich (Murrysville, PA); Ignacio Llamas (Palo Alto, CA); John Burgess (Austin, TX)
Assignee: NVIDIA Corporation
G06T15/06G06T1/20G06T15/005G06T2210/21
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,164,360
App. No.
16/919,700
Granted
Nov 2, 2021
Kind
B2
Abstract

A hardware-based traversal coprocessor provides acceleration of tree traversal operations searching for intersections between primitives represented in a tree data structure and a ray. The primitives may include opaque and alpha triangles used in generating a virtual scene. The hardware-based traversal coprocessor is configured to determine primitives intersected by the ray, and return intersection information to a streaming multiprocessor for further processing. The hardware-based traversal coprocessor is configured to provide a deterministic result of intersected triangles regardless of the order that the memory subsystem returns triangle range blocks for processing, while opportunistically eliminating alpha intersections that lie further along the length of the ray than closer opaque intersections.

Claims (39)

1. A system including:

memory configured to store at least a portion of an acceleration data structure including a plurality of hierarchical nodes, at least one node identifying a primitive range of a virtual scene; and

hardware circuitry operatively coupled to the memory and configured to:

determine primitives in the primitive range received from the memory which are intersected by a ray; and

report a plurality of the primitives the ray is determined to intersect in an order producing a deterministic visible surface result regardless of an order the primitives are received from memory while omitting from the report one or more primitives which have been determined to be intersected by the ray.

2. The system of claim 1 , wherein the primitives which are intersected by the ray are determined in an order primitives in the primitive range are received from the memory that is different from an order the primitives are stored in the memory.

3. The system of claim 1 , wherein the primitives are stored in cache line sized blocks, each of the cache line sized blocks including a different set of primitives associated with the at least one node, and the cache line sized blocks are returned from the memory in an order that is different from the order the cache line sized blocks are stored in the memory.

4. The system of claim 1 , wherein each of the one or more of the primitives the ray is determined to intersect is an alpha primitive.

5. The system of claim 1 , wherein the omitted one or more primitives from the report include primitives which are provably capable of being omitted without a functional impact on visualizing the virtual scene.

6. The system of claim 5 , wherein the primitives intersected by the ray which are provably capable of being omitted without a functional impact on visualizing the virtual scene are parametrically farther away from an origin of the ray than another primitive determined to be intersected by the ray.

7. The system of claim 1 , wherein the omitted one or more primitives include at least one primitive that is parametrically closer to an origin of the ray than another primitive determined to be intersected by the ray and reported.

8. A method implemented by a hardware-based traversal coprocessor coupled to a processor and memory configured to store at least a portion of an acceleration data structure including a plurality of hierarchical nodes with at least one node identifying a primitive range of a virtual scene, the method comprising:

receiving, from the processor, a query including information about a ray;

receiving primitives identified in the primitive range from the memory;

determining which of the received primitives are intersected by the ray; and

reporting, to the processor, a plurality of the primitives the ray is determined to intersect in an order producing a deterministic visible surface result regardless of the order the primitives are received from memory while omitting from the reporting one or more primitives which have been determined to be intersected by the ray.

9. The method of claim 8 , wherein the primitives which are intersected by the ray are determined in an order the primitives are received from the memory that is different from an order the primitives are stored in the memory.

10. The method of claim 8 , wherein each of the one or more of the primitives the ray is determined to intersect is an alpha primitive.

11. The method of claim 8 , wherein the omitted one or more primitives from the report include primitives which are provably capable of being omitted without a functional impact on visualizing the virtual scene.

12. The method of claim 11 , wherein the primitives intersected by the ray which are provably capable of being omitted without a functional impact on visualizing the virtual scene are parametrically farther away from an origin of the ray than another primitive determined to be intersected by the ray.

13. The method of claim 8 , wherein the primitives are stored in cache line sized blocks, each of the cache line sized blocks including a different set of primitives associated with the at least one node, and the cache line sized blocks are returned from the memory in an order that is different from the order the cache line sized blocks are stored in the memory.

14. The method of claim 8 , wherein the omitted one or more primitives include at least one primitive that is parametrically closer to an origin of the ray than another primitive determined to be intersected by the ray and reported.

15. A system including:

memory configured to store a portion of an acceleration data structure including a plurality of hierarchical nodes, at least one node identifying a range of primitives of a virtual scene, the primitives stored in a plurality of cache line sized blocks each including a different set of primitives; and

hardware circuitry operatively coupled to a processor and the memory, the hardware circuitry configured to:

process the blocks received from the memory to determine primitives intersected by a ray; and

report, to the processor, intersection information for a plurality of primitives the ray is determined to intersect in an order providing a deterministic result regardless of the order the blocks are processed by the hardware circuitry.

16. The system of claim 15 , wherein hardware circuitry is configured to process the primitives identified in the cache line sized blocks in the order the primitives are identified in the cache line sized blocks and the order the cache line sized blocks are received from the memory.

17. The system of claim 15 , wherein the one or more of the primitives the ray is determined to intersect are reported while omitting from the report one or more primitives the ray is determined to intersect.

18. The system of claim 17 , wherein the omitted one or more primitives from the report include primitives which are provably capable of being omitted without a functional impact on visualizing the virtual scene.

19. The system of claim 18 , wherein the primitives intersected by the ray which are provably capable of being omitted without a functional impact on visualizing the virtual scene are parametrically farther away from an origin of the ray than another primitive determined to be intersected by the ray.

20. A method implemented by a hardware-based traversal coprocessor coupled to a processor and memory configured to store a portion of an acceleration data structure including a plurality of hierarchical nodes, at least one node identifying a range of primitives of a virtual scene, the primitives stored in a plurality of cache line sized blocks each including a different set of primitives, the method comprising:

receiving, from the processor, a query including information about a ray;

in response to receiving the query, receiving the blocks from the memory;

processing the blocks received from the memory to determine primitives intersected by a ray; and

reporting, to the processor, intersection information for a plurality of primitives the ray is determined to intersect in an order providing a deterministic result regardless of the order the blocks are processed.

21. The method of claim 20 , wherein the one or more of the primitives the ray is determined to intersect are reported while omitting from the report one or more primitives the ray is determined to intersect.

22. The method of claim 20 , wherein the omitted one or more primitives from the report include primitives which are provably capable of being omitted without a functional impact on visualizing the virtual scene.

23. The method of claim 22 , wherein the primitives intersected by the ray which are provably capable of being omitted without a functional impact on visualizing the virtual scene are parametrically farther away from an origin of the ray than another primitive determined to be intersected by the ray.

Continuity (2)
Continuation 16101196 · Aug 10, 2018
Related Publication 20200357159A1 · Nov 12, 2020
Cited By (2)
US 12,462,464 US 12,469,203