One-bit Stack Binary Tree Traversal for Ray Tracing Memory Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing ray tracing methods, particularly with k-d trees, face challenges in real-time rendering due to the time required to rebuild the tree for dynamic scenes and the high calculation burden of hierarchical acceleration structures, which can be exacerbated by limited storage space or bandwidth when processing multiple rays.

Innovation Solution

A method utilizing one-bit stacks to traverse a binary tree in a ray tracing system, where bit values are set and popped to efficiently determine which child nodes intersect a ray, allowing for restarts from the root node when necessary, thereby reducing memory requirements and improving traversal efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional stacks are used to traverse hierarchical acceleration structures for multiple rays, then traversal completeness is improved, but memory usage and bandwidth requirements increase

Engineering Contradiction:
Improvetraversal completenessVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent segments the stack data structure into multiple one-bit stacks, where each stack corresponds to a specific level of the binary tree. This segmentation allows the system to track traversal state at each level independently using minimal memory, avoiding the need for a single large stack that would consume excessive memory bandwidth and storage space.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies local quality by using one-bit stacks specifically at tree levels where branching occurs, rather than maintaining stacks throughout the entire traversal. This localized approach ensures memory efficiency by allocating storage resources only where needed for traversal state tracking, rather than uniformly across all nodes.

Inventive Principle:
Principle #3Local quality

2Productivity

If k-d trees are used for static scenes, then intersection calculation speed is improved, but rebuilding time for dynamic scenes increases

Engineering Contradiction:
Improveintersection calculation speedVSAvoidrebuilding time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent implements a dynamic binary tree structure that can be rapidly rebuilt for dynamic scenes. Unlike static k-d trees that require complete reconstruction when scene geometry changes, this binary tree structure allows for efficient updates and adaptations, maintaining high intersection calculation speed while reducing the time penalty for handling dynamic content.

Inventive Principle:
Principle #15Dynamics

3Productivity

If hierarchical acceleration structures are built by spatially splitting primitives, then ray-triangle intersection efficiency is improved, but calculation burden increases

Engineering Contradiction:
Improveintersection test efficiencyVSAvoidcalculation burden
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent extracts and eliminates the need for traditional stacks from the traversal process. By using one-bit stacks to track traversal state, the system removes the computational overhead associated with stack operations (push, pop, peek) while maintaining the efficiency benefits of hierarchical acceleration structures for ray-primitive intersection testing.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9495792B2Method and apparatus for traversing binary tree in ray tracing system
Publication Date: 2016.11.15 SAMSUNG ELECTRONICS CO LTD
  • US9495792B2 patent drawing
  • US9495792B2 patent drawing
  • US9495792B2 patent drawing

AI summary

A restart method of traversing a binary tree in a ray tracing system includes traversing a tree consisting of a hierarchical acceleration structure using one-bit stacks respectively assigned to levels of the binary tree and restarting at a highest level at which a corresponding one-bit stack has a value indicating that a child node has not yet been traversed, thereby decreasing the capacity of a stack memory required.