Dual Depth Buffering for Unresolved Fragment Processing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Deferred rendering graphics processing systems face inefficiencies due to unresolved fragments, such as punch through objects, which cause unnecessary processing, stalls, and recalculations of depth values.

Innovation Solution

Implementing a graphics processing system with two depth buffers: a primary depth buffer for resolved fragments and a secondary depth buffer for unresolved fragments, allowing for efficient storage and management of depth values during the hidden surface removal stage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a single depth buffer is used to store depth values for all fragments, then the device complexity is reduced, but unnecessary processing occurs when opaque objects overwrite punch through fragments and recalculations of depth values are required

Engineering Contradiction:
Improveprocessing efficiencyVSAvoiddepth buffer structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent divides the single depth buffer into two separate depth buffers: a first depth buffer for storing depth values of resolved fragments and a second depth buffer for storing depth values of unresolved fragments. This segmentation allows the system to track the resolution status of each fragment, enabling opaque objects to overwrite punch through fragments directly in the second depth buffer without triggering unnecessary recalculations, thereby improving processing efficiency while maintaining manageable complexity through structured organization.

Inventive Principle:
Principle #1Segmentation

2Productivity

If punch through fragments are processed before resolving their presence, then the rendering pipeline continues without stalls, but depth values must be recalculated after presence is resolved

Engineering Contradiction:
Improverendering throughputVSAvoidtime for depth value recalculation
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent performs preliminary storage of depth values for punch through fragments in the second depth buffer before their presence is fully resolved. This preliminary action allows the rendering pipeline to continue processing subsequent fragments without stalling, while the depth values are already in place and do not require recalculation after presence resolution, thus eliminating the time loss associated with post-resolution recalculations.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If opaque fragments wait for punch through fragment resolution before processing, then depth test accuracy is maintained, but processing stalls occur reducing overall efficiency

Engineering Contradiction:
Improvedepth test accuracyVSAvoidprocessing throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent introduces the second depth buffer as an intermediary structure that temporarily holds depth values of unresolved punch through fragments. This intermediary allows opaque fragments to be processed against the stored depth values without waiting for presence resolution, maintaining depth test accuracy while preventing processing stalls. The intermediary buffer decouples the depth testing operation from the presence resolution operation, enabling continuous processing throughput.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS12469211B2Processing primitives which have unresolved fragments in a graphics processing system
Publication Date: 2025.11.11 IMAGINATION TECH LTD
  • US12469211B2 patent drawing
  • US12469211B2 patent drawing
  • US12469211B2 patent drawing

AI summary

A graphics processing system performs hidden surface removal and texturing/shading on fragments of primitives. The system includes a primary depth buffer (PDB) for storing depth values of resolved fragments, and a secondary depth buffer (SDB) for storing depth values of unresolved fragments. Incoming fragments are depth tested against depth values from either the PDB or the SDB. When a fragment passes a depth test, its depth value is stored in the PDB if it is a resolved fragment (e.g. if it is opaque or translucent), and its depth value is stored in the SDB if it is an unresolved fragment (e.g. if it is a punch through fragment). This provides more opportunities for subsequent opaque objects to overwrite punch through fragments which passed a depth test, thereby reducing unnecessary processing and time which may be spent on fragments which ultimately will not contribute to the final rendered image.