IP Library › Granted Patent US 10,706,608
Granted Patent B2
US 10,706,608 · App. 15/409,429 · Granted Jul 7, 2020

Tree traversal with backtracking in constant time

Inventors: Nikolaus Binder (Berlin, DE); Alexander Keller (Berlin, DE)
Assignee: NVIDIA Corporation
G06T15/06G06T15/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 10,706,608
App. No.
15/409,429
Granted
Jul 7, 2020
Kind
B2
Abstract

A method, computer readable medium, and system are disclosed for performing tree traversal with backtracking in constant time. The method includes the steps of traversing a tree, maintaining a bit trail variable and a current key variable during the traversing, where the bit trail variable includes a first plurality of bits indicating tree levels on which a node has been postponed along a path from the root of the tree during the traversing, and the current key variable includes a second plurality of bits indicating a number of a current node within the tree, and performing backtracking within the tree during the traversing, utilizing the bit trail variable and the current key variable.

Claims (45)

1. A method comprising:

traversing a tree by a processor;

during the traversing, maintaining a bit trail variable and a current key variable in registers associated with the processor, the bit trail variable including a first plurality of bits indicating tree levels on which a node has been postponed along a path from a root of the tree during the traversing, and the current key variable including a second plurality of bits indicating a number of a current node within the tree; and

performing backtracking to a postponed node within the tree during the traversing, utilizing the bit trail variable and the current key variable, wherein an address of the postponed node is obtained in constant time using a perfect hash map,

wherein the current key variable is maintained by appending a 0 bit to the first plurality of bits when a left child of a node is selected when the traversing proceeds past the node or appending a 1 bit to the first plurality of bits when a right child of the node is selected when the traversing proceeds past the node, and

wherein the bit trail variable is maintained by appending a 0 bit when no backtracking is required when the traversing proceeds past the node or appending a 1 bit when backtracking is required when the traversing proceeds past the node.

2. The method of claim 1 , wherein the tree is a binary tree.

3. The method of claim 2 , further comprising maintaining another variable m that identifies levels on a path from a root of the tree to the current node within the tree on which either bounding boxes of two children do not overlap or a ray does not intersect an overlapping area.

4. The method of claim 3 , wherein each bit of m is assigned to one node on the path, starting from the root of the tree and a least significant bit of the variable m.

5. The method of claim 4 , wherein, in response to identifying only a closest intersection, the traversing omits levels for which the variable m indicates disjoint bounding boxes or for which the variable m indicates that the ray does not intersect the overlapping area.

6. The method of claim 5 , wherein, upon identifying an intersection, the bit trail variable t is updated to t AND m, where AND denotes a bitwise “and” operation.

7. The method of claim 6 , further comprising accessing the most recently postponed node, using the most recently postponed variable, updating the current key variable and bit trail variable, and checking if the most recently postponed node can be omitted by checking (t AND −t) AND m.

8. The method of claim 2 , wherein performing the backtracking includes identifying a number of a postponed node by:

determining a first number of bits, the first number of bits including a number of trailing 0 bits in the first plurality of bits, starting with a least significant bit of the first plurality of bits,

removing the first number of bits from the first plurality of bits of the bit trail variable to create a third plurality of bits, starting with the least significant bit of the first plurality of bits,

removing the first number of bits from the second plurality of bits of the current key variable to create a fourth plurality of bits, starting with the least significant bit of the second plurality of bits, and

flipping the least significant bit of the fourth plurality of bits to obtain the number of the postponed node in binary.

9. The method of claim 1 , wherein the perfect hash map includes:

a table h, having size H, that stores node addresses, and

an additional displacement table d, having size D;

wherein given a position p of a node, a memory address a is calculated as a(p):=(p+d[p mod D]) mod H.

10. The method of claim 9 , wherein the perfect hash map is constructed in parallel.

11. The method of claim 9 , wherein the size D of the additional displacement table d is a power of two.

12. The method of claim 1 , further comprising, during the traversing, maintaining a most recently postponed variable that includes a third plurality of bits indicating a number of a most recently postponed node within the tree.

13. The method of claim 12 , wherein performing the backtracking includes accessing the most recently postponed node, using the most recently postponed variable, and updating the current key variable and bit trail variable.

14. The method of claim 1 , further comprising:

identifying an intersection at the current node within the tree; and

restarting the traversing at the current node.

15. The method of claim 14 , wherein each bit of the first plurality of bits of the bit trail variable that refers to a leaf above the current node is set to 1, and all other bits of the first plurality of bits are set to 0.

16. The method of claim 14 , further comprising reusing the first plurality of bits of the bit trail variable upon determining that a current ray origin and direction match a previous ray origin and direction of a previous path segment.

17. The method of claim 16 , wherein the reusing is performed for one or more of transparency, translucency, and alpha cutouts.

18. The method of claim 1 , wherein the tree is an N-ary tree.

19. A system comprising:

a processor that is configured to:

traverse a tree;

during the traverse, maintain a bit trail variable and a current key variable in registers associated with the processor, the bit trail variable including a first plurality of bits indicating tree levels on which a node has been postponed along a path from a root of the tree during the traversing, and the current key variable including a second plurality of bits indicating a number of a current node within the tree; and

perform backtracking to a postponed node within the tree during the traversing, utilizing the bit trail variable and the current key variable, wherein an address of the postponed node is obtained in constant time using a perfect hash map,

wherein the current key variable is maintained by appending a 0 bit to the first plurality of bits when a left child of a node is selected when the traversing proceeds past the node or appending a 1 bit to the first plurality of bits when a right child of the node is selected when the traversing proceeds past the node, and

wherein the bit trail variable is maintained by appending a 0 bit when no backtracking is required when the traversing proceeds past the node or appending a 1 bit when backtracking is required when the traversing proceeds past the node.

20. A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, causes the processor to perform steps comprising:

traversing a tree;

during the traversing, maintaining a bit trail variable and a current key variable in registers associated with the processor, the bit trail variable including a first plurality of bits indicating tree levels on which a node has been postponed along a path from a root of the tree during the traversing, and the current key variable including a second plurality of bits indicating a number of a current node within the tree; and

performing backtracking to a postponed node within the tree during the traversing, utilizing the bit trail variable and the current key variable, wherein an address of the postponed node is obtained in constant time using a perfect hash map,

wherein the current key variable is maintained by appending a 0 bit to the first plurality of bits when a left child of a node is selected when the traversing proceeds past the node or appending a 1 bit to the first plurality of bits when a right child of the node is selected when the traversing proceeds past the node, and

wherein the bit trail variable is maintained by appending a 0 bit when no backtracking is required when the traversing proceeds past the node or appending a 1 bit when backtracking is required when the traversing proceeds past the node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2018
From: BINDER, NIKOLAUS; KELLER, ALEXANDER
To: NVIDIA CORPORATION
Reel/Frame 044535/0291 →
Continuity (2)
Provisional Application 62280641 · Jan 19, 2016
Related Publication 20170206231A1 · Jul 20, 2017