Graphics processing enhancement by tracking object and/or primitive identifiers
First Claim
1. A method of rendering graphics with a processor, the method comprising:
- setting up a plurality of objects in a scene in virtual space, each said object being defined by a set of vertices;
assigning a unique object identifier to each of the objects;
issuing one or more draw calls to draw the objects;
manipulating parameter values of the vertices to generate output vertex parameter values;
setting up a plurality of primitives from the vertices, each said primitive being defined by a set of one or more of the vertices and each said primitive belonging to one or more of the objects;
performing geometry shading in which one or more output primitives are generated from one or more input primitives, wherein performing the geometry shading includes generating a primitive identifier for one or more primitives generated by the geometry shading by incrementing a primitive identifier for each input primitive by a maximum amount of geometric amplification of output primitives supported by an object with which the input primitives are associated;
rasterizing each of the primitives for a plurality of pixels;
writing a depth at each said pixel to a Z buffer, the Z buffer having a first resolution;
writing one or more of the object identifiers to at least one ID buffer, such that each pixel in the Z buffer is associated with an object identifier in the ID buffer;
processing the pixels for each of the rasterized primitives to determine a set of color values in a color buffer, the color buffer having a second resolution that is less than the first resolution; and
determining a set of display pixels for an output frame at the resolution of the Z buffer using the color values in the color buffer and the identifiers in the ID buffer.
3 Assignments
0 Petitions
Accused Products
Abstract
Graphics processing includes setting up a plurality of objects in a scene in virtual space, each object being defined by a set of vertices. A unique object identifier is assigned to each object and written to an ID buffer. Draw calls are issued to draw the objects associated with the object identifiers. Parameter values of the vertices are manipulated to output vertex parameter values. Primitives are set up from the vertices, each primitive being defined by one or more of the vertices. Each primitive belongs to one or more of the objects. Each primitive is rasterized at a plurality of pixels. Processing the pixels includes spatial or temporal anti-aliasing that utilizes the one or more object identifiers of the plurality of object identifiers. The pixels are processed for each rasterized primitive to generate an output frame.
73 Citations
89 Claims
-
1. A method of rendering graphics with a processor, the method comprising:
-
setting up a plurality of objects in a scene in virtual space, each said object being defined by a set of vertices; assigning a unique object identifier to each of the objects; issuing one or more draw calls to draw the objects; manipulating parameter values of the vertices to generate output vertex parameter values; setting up a plurality of primitives from the vertices, each said primitive being defined by a set of one or more of the vertices and each said primitive belonging to one or more of the objects; performing geometry shading in which one or more output primitives are generated from one or more input primitives, wherein performing the geometry shading includes generating a primitive identifier for one or more primitives generated by the geometry shading by incrementing a primitive identifier for each input primitive by a maximum amount of geometric amplification of output primitives supported by an object with which the input primitives are associated; rasterizing each of the primitives for a plurality of pixels; writing a depth at each said pixel to a Z buffer, the Z buffer having a first resolution; writing one or more of the object identifiers to at least one ID buffer, such that each pixel in the Z buffer is associated with an object identifier in the ID buffer; processing the pixels for each of the rasterized primitives to determine a set of color values in a color buffer, the color buffer having a second resolution that is less than the first resolution; and determining a set of display pixels for an output frame at the resolution of the Z buffer using the color values in the color buffer and the identifiers in the ID buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 88)
-
-
29. A system comprising:
-
a processor, and a memory coupled to the processor, wherein the processor is configured to perform a method of rendering graphics, the method comprising; setting up a plurality of objects in a scene in virtual space, each said object being defined by a set of vertices; assigning a unique object identifier to each of the objects; issuing one or more draw calls to draw the objects; manipulating parameter values of the vertices to generate output vertex parameter values; setting up a plurality of primitives from the vertices, each said primitive being defined by a set of one or more of the vertices and each said primitive belonging to one or more of the objects; performing geometry shading in which one or more output primitives are generated from one or more input primitives, wherein the performing geometry shading includes generating a primitive identifier for one or more primitives generated by the geometry shading by incrementing a primitive identifier for each input primitive by a maximum amount of geometric amplification of output primitives supported by an object with which the input primitives are associated; rasterizing each of the primitives for a plurality of pixels; writing a depth at each said pixel to a Z buffer, the Z buffer having a first resolution; writing one or more of the object identifiers to at least one ID buffer, such that each pixel in the Z buffer is associated with an object identifier in the ID buffer; processing the pixels for each of the rasterized primitives to determine a set of color values in a color buffer, the color buffer having a second resolution that is less than the first resolution; and determining a set of display pixels for an output frame at the resolution of the Z buffer using the color values in the color buffer and the identifiers in the ID buffer. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58)
-
-
59. A graphics processing unit (GPU) comprising:
-
an ID module configured to; receive information corresponding to a plurality of objects in a scene in virtual space, each said object being defined by a set of vertices; receive one or more object identifiers in a command buffer for each said object in the plurality, and write the one or more object identifiers to an ID buffer; wherein the GPU is further configured to perform geometry shading in which one or more output primitives are generated from one or more input primitives, wherein performing geometry shading includes generating a primitive identifier for one or more primitives generated by the geometry shading by incrementing a primitive identifier for each input primitive by a maximum amount of geometric amplification of output primitives supported by an object with which the input primitives are associated; and wherein the GPU is further configured to render the two or more instanced objects by; manipulating parameter values of the vertices to generate output vertex parameter values; setting up a plurality of primitives from the vertices, each said primitive being defined by a set of one or more of the vertices and each said primitive belonging to one or more of the objects; rasterizing each of the primitives for a plurality of pixels; writing a depth at each said pixel to a Z buffer, the Z buffer having a first resolution; writing one or more of the object identifiers to at least one ID buffer, such that each pixel in the Z buffer is associated with an object identifier in the ID buffer; processing the pixels for each of the rasterized primitives to determine a set of color values in a color buffer, the color buffer having a second resolution that is less than the first resolution; and determining a set of display pixels for an output frame at the resolution of the Z buffer using the color values in the color buffer and the identifiers in the ID buffer. - View Dependent Claims (60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87)
-
-
89. A method of rendering one or more graphics frames with a processor, the one or more graphics frames depicting a plurality of objects, the method comprising:
-
a) assigning a unique object identifier to each of the objects; b) for each said frame, manipulating vertices of each of the objects in virtual space, each said object including one or more primitives; b′
) for each said frame, performing geometry shading in which one or more output primitives are generated from one or more input primitives, wherein performing geometry shading includes generating a primitive identifier for one or more primitives generated by the geometry shading by incrementing a primitive identifier for each input primitive by a maximum amount of geometric amplification of output primitives supported by an object with which the input primitives are associatedc) for each said frame, converting the primitives of the objects, from the virtual space to screen space, wherein the screen space comprises a plurality of depth samples and a plurality of color samples; d) for each said frame, determining a final color value of each of the color samples in screen space and a final depth value of each of the depth samples in screen space, wherein the final depth values are stored in a depth buffer and the final color values are stored in a color buffer, wherein the depth buffer has a higher resolution than the color buffer; e) for each said frame, storing at least one of the object identifiers in an ID buffer, wherein each of the final depth samples in the depth buffer are associated with one of the object identifiers in the ID buffer; f) for each said frame, determining a final set of display pixels at the higher resolution of the depth buffer using the color values in the color buffer and the object identifiers in the ID buffer.
-
Specification