Depth Binning Hardware for Reducing Pixel Overdraw
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Pixel overdraw in graphics processing pipelines leads to increased power consumption and performance degradation without improving rendering quality, as the shader output for one pixel can be overridden by later pixels, resulting in redundant workload.
Innovation Solution
Implementing depth culling techniques such as depth binning and two-pass rendering, where primitives are sorted into depth bins and processed in near-to-far order, and using a buffer to initiate two-pass processing through the screen space pipeline to update depth values and cull fragments aggressively, reducing the need for redundant pixel shader processing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If pixels are processed in arbitrary order without depth sorting, then processing simplicity is maintained, but redundant pixel shader workload increases causing power consumption and performance degradation
Solution Approach 1:
The patent applies preliminary action by performing depth binning and sorting primitives into near-to-far order before pixel shader processing. The binner hardware sorts primitives into depth bins in advance, so that when fragments are processed, the depth buffer already contains accurate depth information from nearer primitives. This preliminary organization enables aggressive depth culling to eliminate redundant pixel shader executions for fragments that will be occluded, thereby reducing power consumption while maintaining rendering throughput.
2Productivity
If depth sorting is implemented to reduce overdraw, then pixel shader workload is reduced, but processing time and pipeline complexity increase
Solution Approach 1:
The patent applies segmentation by dividing the depth range into multiple discrete depth bins and sorting primitives into these bins. Instead of performing a complete sort of all primitives, the binner hardware segments them into a smaller number of depth bins (e.g., 8-16 bins). This segmented approach reduces the sorting complexity and time compared to a full sort, while still enabling effective depth culling within each bin and across bins, thereby reducing pixel shader workload without excessive processing time penalty.
Solution Approach 2:
The patent applies parameter changes by transforming the continuous depth parameter into discrete depth bin indices. The binner hardware computes bin indices from primitive depth values and uses these discrete indices for sorting and processing. This parameter transformation simplifies the sorting operation and enables efficient hardware implementation, reducing the time complexity from O(n log n) for continuous sorting to a more manageable discrete binning operation, thus reducing processing time while maintaining the benefit of reduced overdraw.
3Productivity
If aggressive depth culling is applied, then redundant processing is eliminated, but rendering quality may be compromised if depth information is inaccurate
Solution Approach 1:
The patent applies preliminary action by performing a first pass through the primitive list to compute depth bins and update the depth buffer, before performing the actual rendering pass. This preliminary depth buffer update ensures that when aggressive depth culling is applied in the second pass, the depth comparisons are made against accurate depth values from nearer primitives. This two-pass approach with preliminary depth buffer population maintains rendering accuracy while enabling aggressive culling to improve processing efficiency.
Data Source
AI summary
Described herein are techniques for improving the effectiveness of depth culling. In a first technique, a binner is used to sort primitives into depth bins. Each depth bin covers a range of depths. The binner transmits the depth bins to the screen space pipeline for processing in near-to-far order. Processing the near bins first results in the depth buffer being updated, allowing fragments for the primitives in the farther bins to be culled more aggressively than if the depth binning did not occur. In a second technique, a buffer is used to initiate two-pass processing through the screen space pipeline. In the first pass, primitives are sent down to update the depth block and are then culled. The fragments are processed normally in the second pass, with the benefit of the updated depth values.


