Sub-Primitive Presence Compression for Faster Ray Intersection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Ray tracing systems experience latency and increased computational load due to frequent execution of shader programs to determine the presence of punch through primitives during intersection testing, which is not optimally addressed by existing methods like sub-triangle opacity masks that significantly increase data volume.
Innovation Solution
A method and unit for compressing and decompressing sub-primitive presence indications using spatial decorrelation and entropy encoding to reduce data volume, leveraging the non-random distribution of presence states in physical structures for improved compression.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If sub-triangle opacity masks are used to determine primitive presence, then the accuracy of intersection testing is improved, but the data volume increases significantly
Solution Approach 1:
The primitive is divided into multiple sub-primitives (e.g., sub-triangles), and presence indications are generated for each sub-primitive based on texture sampling. This segmentation allows selective testing of only relevant sub-primitives rather than the entire primitive, improving intersection testing accuracy while managing data volume through hierarchical organization.
Solution Approach 2:
The patent introduces a hierarchical dimension by organizing presence indications into a tree structure with root nodes, intermediate nodes, and leaf nodes. Each node contains presence indications for its child nodes, creating a multi-level data structure that reduces the amount of data needed at each level while maintaining comprehensive coverage for accurate intersection testing.
2Measurement precision
If shader programs are executed frequently to determine primitive presence, then the accuracy of rendering is improved, but the latency and computational load increase
Solution Approach 1:
Presence indications for sub-primitives are pre-calculated by sampling the texture at sub-primitive centers before intersection testing occurs. This preliminary action stores the results in a hierarchical data structure, so during ray tracing, the system can quickly retrieve pre-computed presence information without executing shader programs at runtime, significantly reducing latency while maintaining rendering accuracy.
3Loss of information
If more presence indication data is stored for each primitive, then the completeness of intersection information is improved, but the memory usage increases
Solution Approach 1:
The patent merges presence information across multiple hierarchical levels by combining results from root node testing, intermediate node testing, and leaf node sub-primitive presence indications. This merging approach provides complete intersection information through the hierarchical aggregation of data, ensuring that all necessary presence information is available while using less total memory than storing complete presence data for every primitive at the lowest level.
Solution Approach 2:
The presence indication data is organized in a nested hierarchical structure where root nodes contain presence indications for intermediate nodes, which in turn contain presence indications for leaf nodes and their sub-primitives. This nesting allows the system to store presence information at multiple levels of abstraction, providing complete intersection information while efficiently managing memory by only storing detailed sub-primitive presence data where necessary.
Data Source
AI summary
Compressed data is decompressed to determine sub-primitive presence indications for intersection testing in a rendering system. Entropy encoded data is read from a block of compressed sub-primitive presence indications data and entropy decoding determines a block of entropy decoded data values. Spatial recorrelation on the block of entropy decoded values determines sub-primitive presence indications. For each line of entropy decoded values in a first dimension: for the entropy decoded values in the line: (i) a predicted value is determined for the entropy decoded value based on other entropy decoded values in the line, and (ii) the entropy decoded value is replaced with a value of a sum of the entropy decoded value and the determined predicted value for the entropy decoded value. For each line of entropy decoded values in a second dimension: for the entropy decoded values in the line: (i) a predicted value for the entropy decoded value is determined based on other entropy decoded values in the line, and (ii) the entropy decoded value is replaced with a value of a sum of the entropy decoded value and the determined predicted value for the entropy decoded value.


