IP Library Granted Patent US 12,469,211
Granted Patent B2
US 12,469,211 · App. 18/601,621 · Granted Nov 11, 2025

Processing primitives which have unresolved fragments in a graphics processing system

Inventor: John Howson (St Albans, GB)
Assignee: Imagination Technologies Limited
G06T15/405G06T15/005G06T15/30G06T15/40G06T19/20
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,469,211
App. No.
18/601,621
Granted
Nov 11, 2025
Kind
B2
Abstract

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.

Claims (48)

1 . A method of processing a fragment in a rendering system, comprising:

in response to the fragment passing a depth test, determining whether to store a depth value of the fragment in a first depth buffer or in a second depth buffer based on whether the fragment is resolved or unresolved;

performing depth tests for fragments using depth values from at least one of the depth buffers; and

maintaining a set of indicators which indicate, for each of a plurality of sample positions, which of the depth buffers to use for the depth tests.

2 . The method of claim 1 , further comprising using the depth values stored in the first and second depth buffers for rendering a scene.

3 . The method of claim 1 , further comprising storing the depth value of the fragment in the first depth buffer or in the second depth buffer in accordance with said determination, wherein:

if the fragment is resolved, the depth value of the fragment is stored in the first depth buffer; and

if the fragment is unresolved, the depth value of the fragment is stored in the second depth buffer.

4 . A rendering system comprising at least one processor configured to:

in response to a fragment passing a depth test, determine whether to store a depth value of the fragment in a first depth buffer or in a second depth buffer based on whether the fragment is resolved or unresolved; and

use depth testing logic to perform depth tests for fragments using depth values from at least one of the depth buffers;

wherein the depth testing logic is configured to maintain a set of indicators which indicate, for each of a plurality of sample positions, which of the depth buffers to use for the depth tests.

5 . The rendering system of claim 4 , wherein the rendering system comprises the first depth buffer and the second depth buffer.

6 . The rendering system of claim 4 , wherein the rendering system is further configured to store the depth value of the fragment in the first depth buffer or in the second depth buffer in accordance with said determination.

7 . The rendering system of claim, 4 wherein the fragments are fragments of primitives of a scene to be rendered, and wherein the rendering system is further configured to render the scene in accordance with values stored in said first and second depth buffers.

8 . The rendering system of claim 4 , wherein the rendering system is configured to:

store the depth value of the fragment in the first depth buffer if the fragment is resolved; and

store the depth value of the fragment in the second depth buffer if the fragment is unresolved.

9 . The rendering system of claim 4 , wherein the rendering system is a deferred rendering system.

10 . The rendering system of claim 4 ,

wherein a fragment is unresolved if one or more of: (i) the depth of the fragment is not resolved, (ii) the presence of the fragment is not resolved, or (iii) the visibility of the fragment is not resolved; and

wherein a fragment is resolved if the depth, presence and visibility of the fragment are resolved.

11 . The rendering system of claim 4 ,

wherein fragments associated with a punch through object type are unresolved fragments before the presence of the fragments is resolved, and

wherein fragments associated with an opaque object type or a translucent object type are resolved fragments unless the visibility of the fragment is not resolved.

12 . The rendering system of claim 4 , wherein the rendering system comprises:

a hidden surface removal module which includes said first depth buffer, said second depth buffer and said depth testing logic; and

a fragment processing module configured to perform one or both of shading and texturing on fragments which can resolve unresolved fragments, wherein the fragment processing module is arranged to act on fragments after the depth testing logic.

13 . The rendering system of claim 12 , wherein the hidden surface removal module is configured to:

store, in the first depth buffer, the depth value of a fragment which passes a depth test if the fragment is a resolved fragment;

store, in the second depth buffer, the depth value of a fragment which passes a depth test if the fragment is an unresolved fragment;

send unresolved fragments, for which depth values are stored in the second depth buffer, to the fragment processing module to be resolved; and

update the depth values in the first depth buffer using depth values of resolved fragments fed back from the fragment processing module.

14 . The rendering system of claim 4 , further configured to resolve the fragments of the second depth buffer if a particular fragment fails one of the depth tests performed using a depth value stored in the second depth buffer, wherein the depth testing logic is configured to:

use the depth values of the resolved fragments to update the depth values in the first depth buffer; and

perform a second depth test on the particular fragment using the appropriate depth value stored in the first depth buffer after the updating of the depth values in the first depth buffer.

15 . The rendering system of claim 4 , further configured such that, if a particular fragment fails a depth test performed using a depth value stored in the second depth buffer, the depth testing logic is configured to:

perform a second depth test on the particular fragment using the appropriate depth value stored in the first depth buffer;

wherein the rendering system is configured to, if the particular fragment passes the second depth test: (i) resolve the fragments of the second depth buffer, (ii) use the depth values of the resolved fragments to update the depth values in the first depth buffer, and (iii) perform a third depth test on the particular fragment using the appropriate depth value stored in the first depth buffer after the updating of the depth values in the first depth buffer; and

wherein the rendering system is configured to discard the particular fragment if the particular fragment fails the second depth test.

16 . The rendering system of claim 4 , further comprising a set of at least three tag buffers, including:

a first one of the tag buffers which is configured to store primitive identifiers for the fragments whose depth values are stored in the first depth buffer;

a second one of the tag buffers which is configured to store primitive identifiers for the fragments whose depth values are stored in the second depth buffer; and

a third one of the tag buffers which is configured to store primitive identifiers for fragments which are in the process of being flushed.

17 . The rendering system of claim 4 , wherein multiple tag buffers are configured to store primitive identifiers for multiple layers of opaque punch through fragments, wherein the rendering system is configured to control the order in which the multiple tag buffers are flushed such that the front-most opaque punch through fragments are flushed before underlying layers of the opaque punch through fragments.

18 . A non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture a rendering system that is configured to:

in response to a fragment passing a depth test, determine whether to store a depth value of the fragment in a first depth buffer or in a second depth buffer based on whether the fragment is resolved or unresolved;

the rendering system comprising depth testing logic configured to perform depth tests for fragments using depth values from at least one of the depth buffers, wherein the depth testing logic is configured to maintain a set of indicators which indicate, for each of a plurality of sample positions, which of the depth buffers to use for the depth tests.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →