Graphics Processor Two-Pass Visibility Culling
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current graphics processing systems face inefficiencies due to 'overdraw' caused by processing primitives sequentially, leading to redundant rendering operations, which reduces frame rates and increases memory bandwidth requirements, especially in complex scenes.
Innovation Solution
Implementing a two-pass processing approach where a pre-pass operation determines visibility information for primitives, allowing for efficient identification and culling of non-visible fragments, and a main pass performs actual rendering based on this information, using a set of primitive identifying information to control fragment processing.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Device complexity
If primitives are processed sequentially in a single pass, then the rendering pipeline is simple, but redundant rendering operations occur causing overdraw
Solution Approach 1:
The rendering process is segmented into two distinct passes: a visibility determination pass that identifies visible fragments, and a rendering pass that processes only visible fragments. This segmentation eliminates redundant rendering operations by separating the culling decision-making from the actual rendering, thereby resolving the contradiction between pipeline simplicity and processing efficiency.
Solution Approach 2:
The visibility determination pass performs preliminary action by pre-calculating which fragments are visible before the actual rendering occurs. This preliminary identification of visible fragments allows the subsequent rendering pass to focus only on necessary operations, eliminating overdraw and improving processing efficiency without significantly increasing overall system complexity.
2Ease of manufacture
If all fragments are rendered regardless of visibility, then rendering is straightforward, but memory bandwidth requirements increase
Solution Approach 1:
The visibility determination pass extracts and identifies only the necessary rendering information (visible fragments) before the rendering process. By taking out the culling decision-making step and performing it separately, the system can then transfer memory bandwidth only for visible fragments in the rendering pass, significantly reducing unnecessary memory bandwidth consumption while keeping the rendering operation itself simple.
Solution Approach 2:
The preliminary visibility determination pass performs the action of identifying which fragments need to be rendered before actual rendering occurs. This preliminary filtering allows the rendering system to minimize memory bandwidth usage by only loading and processing data for visible fragments, rather than processing all fragments regardless of visibility.
3Measurement precision
If visibility information is determined for all sampling positions, then accurate hidden surface removal is achieved, but processing time increases
Solution Approach 1:
The processing is segmented into two passes where the first pass determines visibility for all sampling positions to achieve accurate hidden surface removal, while the second pass efficiently processes only visible fragments. This segmentation allows the system to invest computational resources in accurate visibility determination where needed, while avoiding the time cost of processing invisible fragments, thus balancing precision and time efficiency.
Solution Approach 2:
The first pass performs preliminary visibility determination for all sampling positions to establish accurate hidden surface removal data. This preliminary action, while computationally intensive, is performed once and enables the second pass to proceed much more quickly by processing only the subset of visible fragments, thereby achieving both measurement precision and acceptable processing time.
Data Source
AI summary
When performing tile-based rendering a first, pre-pass operation in which primitives in a sequence of primitives for a tile are processed to determine visibility information for the sequence, the visibility information being usable to determine whether fragments for a primitive in the sequence should subsequently be processed further, is performed. Thereafter a second, main pass operation is performed in which the further processing of fragments for primitives that were processed during the first, pre-pass operation is controlled based on the determined visibility information for the sequence of primitives, such that for fragments for which the visibility information indicates that the fragments should not be processed further for the render output some or all of the processing during the second, main pass is omitted. The visibility information indicates which primitives should be rendered for which sampling positions of the render output in a hierarchical manner.


