Culling in a vertex processing unit
First Claim
Patent Images
1. A graphics processor comprising:
- a vertex processing unit coupled to receive data for a plurality of vertices, each vertex being associated with at least one of a plurality of primitives in a scene to be rendered,the vertex processing unit being configured to apply a visibility test to each of the plurality of primitives and to cull primitives that fail the visibility test from a list of primitives to be processed, the vertex processing unit comprising;
a programmable vertex shader configured to compute one or more per-vertex attribute values for a vertex; and
a primitive processing engine configured to apply the visibility test and to cull each of the primitives that fails the visibility test from the list of primitives to be processed, wherein the visibility test is defined by reference to clip space coordinates of vertices of a primitive, wherein the visibility test is a diamond visibility test, wherein each pixel has an associated internal region having a diamond shape that covers a center of the pixel, and wherein if a primitive intersects the internal region of more than one pixel, the primitive is visible and is not culled;
wherein the vertex shader is programmed to compute clip space coordinates for the vertices during a first pass executed prior to applying the visibility test and to compute at least one other per-vertex attribute value during a second pass executed subsequently to culling the primitives that fail the visibility test; and
a downstream processing unit coupled to receive the primitives that are not culled from the vertex processing unit and configured to generate pixel data from the received primitives,wherein vertices of primitives that fail the visibility test are not received by the downstream processing unit.
1 Assignment
0 Petitions
Accused Products
Abstract
A graphics processor performs culling of invisible primitives in a vertex processing unit that includes a geometry shader or other processing engine that performs per-primitive operations. Primitives can be culled after clip space coordinates for the vertices have been computed and in some instances before at least one other vertex attribute has been computed. To the extent that this early culling reduces the number of vertices for which the full set of attributes is computed or reduces the number of primitives or vertices delivered to downstream units, throughput of the processor is increased.
-
Citations
19 Claims
-
1. A graphics processor comprising:
-
a vertex processing unit coupled to receive data for a plurality of vertices, each vertex being associated with at least one of a plurality of primitives in a scene to be rendered, the vertex processing unit being configured to apply a visibility test to each of the plurality of primitives and to cull primitives that fail the visibility test from a list of primitives to be processed, the vertex processing unit comprising; a programmable vertex shader configured to compute one or more per-vertex attribute values for a vertex; and a primitive processing engine configured to apply the visibility test and to cull each of the primitives that fails the visibility test from the list of primitives to be processed, wherein the visibility test is defined by reference to clip space coordinates of vertices of a primitive, wherein the visibility test is a diamond visibility test, wherein each pixel has an associated internal region having a diamond shape that covers a center of the pixel, and wherein if a primitive intersects the internal region of more than one pixel, the primitive is visible and is not culled; wherein the vertex shader is programmed to compute clip space coordinates for the vertices during a first pass executed prior to applying the visibility test and to compute at least one other per-vertex attribute value during a second pass executed subsequently to culling the primitives that fail the visibility test; and a downstream processing unit coupled to receive the primitives that are not culled from the vertex processing unit and configured to generate pixel data from the received primitives, wherein vertices of primitives that fail the visibility test are not received by the downstream processing unit. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method of processing vertex data, the method comprising:
-
receiving, at a vertex processing unit of a graphics processor, vertex data for a plurality of vertices, each vertex being associated with at least one of a plurality of primitives in a scene to be rendered; applying a visibility test to each of the plurality of primitives, wherein the visibility test is a diamond visibility test, wherein each pixel has an associated internal region having a diamond shape that covers a center of the pixel, and wherein if a primitive intersects the internal region of more than one pixel, the primitive is visible and is not culled; culling each primitive that fails the visibility test; subsequently to the act of culling, computing at least one per-vertex attribute value for each vertex that is associated with at least one primitive that is not culled; and subsequently to the act of computing, propagating the vertices of each primitive that is not culled during the act of culling from the vertex processing unit to a downstream processing unit of the graphics processor. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18, 19)
-
Specification