IP Library › Granted Patent US 12,354,212
Granted Patent B2
US 12,354,212 · App. 18/420,449 · Granted Jul 8, 2025

Method for forward progress and programmable timeouts of tree traversal mechanisms in hardware

Inventors: Greg Muthler (Chapel Hill, NC); Ronald Charles Babich, Jr. (Murrysville, PA); William Parsons Newhall, Jr. (Woodside, CA); Peter Nelson (San Francisco, CA); James Robertson (Austin, TX); John Burgess (Austin, TX)
Assignee: NVIDIA Corporation
G06T15/06G06F9/3877G06N5/046G06T1/20G06T1/60G06T17/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 12,354,212
App. No.
18/420,449
Granted
Jul 8, 2025
Kind
B2
Abstract

In a ray tracer, to prevent any long-running query from hanging the graphics processing unit, a traversal coprocessor provides a preemption mechanism that will allow rays to stop processing or time out early. The example non-limiting implementations described herein provide such a preemption mechanism, including a forward progress guarantee, and additional programmable timeout options that can be time or cycle based. Those programmable options provide a means for quality of service timing guarantees for applications such as virtual reality (VR) that have strict timing requirements.

Claims (21)

1. A ray tracer comprising:

traversal and testing hardware configured to traverse an acceleration data structure and test for bounding volume and/or geometric primitive intersection with a ray or rays specified by ray information; and

a programmable monitoring circuit connected to the traversal and testing hardware and configured to monitor how much the traversal and testing hardware is being used to traverse and test the acceleration data structure for intersection with the specified ray or rays and to interrupt traversal and testing associated with a first ray by the traversal and testing hardware when it is determined that usage of the traversal and testing hardware to traverse and/or test the acceleration data structure for intersection with the specified ray or rays is excessive without interrupting traversal and testing associated with at least one other ray being tested during the interruption.

2. The ray tracer of claim 1 , further comprising a plurality of counters associated with the rays, each of the counters is configured to count a number of traversal steps performed for the respective ray.

3. The ray tracer of claim 2 , wherein the usage of the traversal and testing hardware is determined to be excessive based on the number of traversal steps counted by the counter exceeding a threshold programmed for the ray.

4. The ray tracer of claim 1 , wherein the programmable monitoring circuit is work-based.

5. The ray tracer of claim 1 , wherein the programmable monitoring circuit is cycle-based.

6. The ray tracer of claim 1 , wherein the programmable monitoring circuit is time-based.

7. The ray tracing of claim 1 , wherein the programmable monitoring circuit is epoch-based.

8. The ray tracer of claim 1 , wherein monitoring how much the traversal and testing hardware is being used comprises counting a number of leaf nodes traversals.

9. A method implemented by a ray tracer, the method comprising:

traversing, using traversal and testing hardware, an acceleration data structure and test for bounding volume and/or geometric primitive intersection with a ray or rays specified by ray information;

monitoring how much the traversal and testing hardware is being used to traverse and test the acceleration data structure for intersection with the specified ray or rays; and

interrupting traversal and testing associated with a first ray by the traversal and testing hardware when it is determined that usage of the traversal and testing hardware to traverse and/or test the acceleration data structure for intersection with the specified ray or rays is excessive without interrupting traversal and testing associated with at least one other ray being tested during the interruption.

10. The method of claim 9 , further comprising a plurality of counters associated with the rays, each of the counters is configured to count a number of traversal steps performed for the respective ray.

11. The method of claim 10 , wherein the usage of the traversal and testing hardware is determined to be excessive based on the number of traversal steps counted by the counter exceeding a threshold programmed for the ray.

12. The method of claim 9 , wherein how much the traversal and testing hardware is being used is work-based.

13. The method of claim 9 , wherein how much the traversal and testing hardware is being used is cycle-based.

14. The method of claim 9 , wherein how much the traversal and testing hardware is being used is time-based.

15. The method of claim 9 , wherein how much the traversal and testing hardware is being used is epoch-based.

16. The method of claim 9 , wherein monitoring how much the traversal and testing hardware is being used comprises counting a number of leaf nodes traversals.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 17, 2024
From: MUTHLER, GREG; BABICH, RONALD C.; NEWHALL, WILLIAM P., JR.; NELSON, PETER; ROBERTSON, JIM; BURGESS, JOHN
To: NVIDIA CORPORATION
Reel/Frame 067132/0094 →
Continuity (4)
Division 17889545 · Aug 17, 2022
Continuation 17111844 · Dec 4, 2020
Continuation 16101232 · Aug 10, 2018
Related Publication 20240169655A1 · May 23, 2024
References Cited (58)
US 8264484B1 · Lauterbach · 2012 [cited by applicant]
US 8502819B1 · Aila · 2013 [cited by examiner]
US 8505819B2 · Lee · 2013 [cited by applicant]
US 9552664B2 · Laine et al. · 2017 [cited by applicant]
US 9569559B2 · Karras et al. · 2017 [cited by applicant]
US 9582607B2 · Laine et al. · 2017 [cited by applicant]
US 10025879B2 · Karras et al. · 2018 [cited by applicant]
US 10235338B2 · Laine et al. · 2019 [cited by applicant]
US 20100053162A1 · Dammertz et al. · 2010 [cited by applicant]
US 20100188403A1 · Mejdrich · 2010 [cited by applicant]
US 20100289799A1 · Hanika et al. · 2010 [cited by applicant]
US 20110023040A1 · Hendry · 2011 [cited by examiner]
US 20150089495A1 · Persson · 2015 [cited by applicant]
US 20150302629A1 · Obert · 2015 [cited by applicant]
US 20160070767A1 · Karras et al. · 2016 [cited by applicant]
US 20160070820A1 · Laine et al. · 2016 [cited by applicant]
US 20160071234A1 · Lehtinen et al. · 2016 [cited by applicant]
US 20160071310A1 · Karras · 2016 [cited by applicant]
US 20160078588A1 · Garanzha · 2016 [cited by applicant]
US 20160239994A1 · Chung et al. · 2016 [cited by applicant]
US 20160292908A1 · Obert · 2016 [cited by applicant]
US 20160378481A1 · Leijten · 2016 [cited by applicant]
US 20170091898A1 · Hwang · 2017 [cited by applicant]
US 20170228233A1 · Mishaeli · 2017 [cited by examiner]
US 20170278297A1 · Ozdas · 2017 [cited by applicant]
US 20180089885A1 · Wald · 2018 [cited by applicant]
US 20180182158A1 · Karras · 2018 [cited by applicant]
US 20180292897A1 · Wald · 2018 [cited by examiner]
US 20180293783A1 · Wald · 2018 [cited by applicant]
US 20190057539A1 · Stanard · 2019 [cited by applicant]
CN 103021018A · 2013 [cited by applicant]
CN 107111890A · 2017 [cited by applicant]
Chinese Office Action for Chinese Application No. 201910490166.9 issued Dec. 13, 2023. [cited by applicant]
U.S. Appl. No. 16/101,066, filed Aug. 10, 2018. [cited by applicant]
U.S. Appl. No. 16/101,109, filed Aug. 10, 2018. [cited by applicant]
U.S. Appl. No. 16/101,148, filed Aug. 10, 2018. [cited by applicant]
U.S. Appl. No. 16/101,180, filed Aug. 10, 2018. [cited by applicant]
U.S. Appl. No. 16/101,196, filed Aug. 10, 2018. [cited by applicant]
U.S. Appl. No. 16/101,247, filed Aug. 10, 2018. [cited by applicant]
IEEE 754-2008 Standard for Floating-Point Arithmetic, Aug. 29, 2008, 70 pages. [cited by applicant]
The Cg Tutorial, Chapter 7, “Environment Mapping Techniques,” NVIDIA Corporation, 2003, 32 pages. [cited by applicant]
Akenine-Möller, Tomas, et al., “Real-Time Rendering,” Section 9.8.2, Third Edition CRC Press, 2008, p. 412. [cited by applicant]
Appel, Arthur, “Some techniques for shading machine renderings of solids,” AFIPS Conference Proceedings: 1968 Spring Joint Computer Conference, 9 pages. [cited by applicant]
Foley, James D., et al., “Computer Graphics: Principles and Practice,” 2nd Edition Addison-Wesley 1996 and 3rd Edition Addison-Wesley 2014. [cited by applicant]
Glassner, Andrew, “An Introduction to Ray Tracing,” Morgan Kaufmann, 1989. [cited by applicant]
Hall, Daniel, “Advanced Rendering Technology,” Graphics Hardware 2001, 7 pages. [cited by applicant]
Hery, Christophe, et al., “Towards Bidirectional Path Tracing at Pixar,” 2016, 20 pages. [cited by applicant]
Kajiya, James T., “The Rendering Equation,” SIGGRAPH, vol. 20, No. 4, 1986, pp. 143-150. [cited by applicant]
Parker, Steven G., et al., “OptiX: A General Purpose Ray Tracing Engine,” ACM Transactions on Graphics, vol. 29, Issue 4, Article No. 66, Jul. 2010, 13 pages. [cited by applicant]
Stich, Martin, “Introduction to NVIDIA RTX and DirectX Ray Tracing,” NVIDIA Developer Blog, Mar. 19, 2018, 13 pages. [cited by applicant]
Whitted, Turner, “An Improved Illumination Model for Shaded Display,” Communications of the ACM, vol. 23, No. 6, Jun. 1990, pp. 343-349. [cited by applicant]
Woop, Sven, “A Ray Tracing Hardware Architecture for Dynamic Scenes,” Thesis, Universität des Saarlandes, 2004, 100 pages. [cited by applicant]
Woop, Sven, et al., “RPU: A Programmable Ray Processing Unit for Realtime Ray Tracing,” ACM Transactions on Graphics, Jul. 2005, 11 pages. [cited by applicant]
Quinnell, Eric Charles, “Floating-Point Fused Multiply-Add Architectures,” Dissertation, University of Texas at Austin, 2007, 163 pages. [cited by applicant]
Woop, Sven, et al., Watertight Ray/Triangle Intersection, Journal of Computer Graphics Techniques, vol. 2, No. 1, 2013, pp. 65-82. [cited by applicant]
Office Action dated Jul. 11, 2019, issued in U.S. Appl. No. 16/101,066. [cited by applicant]
Manolopoulos, Konstantinos, D. Reisis, and Vassilios A. Chouliaras. An efficient multiple precision floating-point Multiply-Add Fused unit. Microelectronics Journal 49 (2016): 10-18. (Year: 2016). [cited by applicant]
Chen, Min and T. Townsend. “Efficient and Consistent Algorithms for Determining the Containment of Points in Polygons and Polyhedra.” (1987). (Year: 1987). [cited by applicant]