GB2509113A - Tessellating Patches Of Surface Data In Tile Based Computer Graphics Rendering - Google Patents

Tessellating Patches Of Surface Data In Tile Based Computer Graphics Rendering Download PDF

Info

Publication number
GB2509113A
GB2509113A GB1223099.1A GB201223099A GB2509113A GB 2509113 A GB2509113 A GB 2509113A GB 201223099 A GB201223099 A GB 201223099A GB 2509113 A GB2509113 A GB 2509113A
Authority
GB
United Kingdom
Prior art keywords
tile
patch
depth value
hidden
bounding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
GB1223099.1A
Other versions
GB201223099D0 (en
GB2509113B (en
Inventor
Steven John Fishwick
John William Howson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Priority to GB1223099.1A priority Critical patent/GB2509113B/en
Priority to GB1702949.7A priority patent/GB2544679B/en
Publication of GB201223099D0 publication Critical patent/GB201223099D0/en
Priority to DE102013114176.5A priority patent/DE102013114176A1/en
Priority to US14/135,125 priority patent/US9547934B2/en
Priority to CN201310713479.9A priority patent/CN103886633B/en
Priority to CN201710873834.7A priority patent/CN107657655B/en
Publication of GB2509113A publication Critical patent/GB2509113A/en
Priority to US15/372,088 priority patent/US9892547B2/en
Application granted granted Critical
Publication of GB2509113B publication Critical patent/GB2509113B/en
Priority to US15/862,382 priority patent/US11527040B2/en
Priority to US18/070,359 priority patent/US20230088494A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Abstract

A method and system for culling a patch of surface data from one or more tiles in a tile based computer graphics system. A rendering space is divided into a plurality of tiles and a patch of surface data read. Then, at least a portion of the patch is analysed to determine data representing a bounding depth value evaluated over at least one tile. This may comprise tessellating the patch of surface data to derive a plurality of tessellated primitives and analysing at least some of the tessellated primitives. For each tile within which the patch is located, the data representing the bounding depth value is then used to determine whether the patch is hidden in the tile, and at least a portion of the patch is rendered, if the patch is determined not to be hidden in at least one tile. Preferably a display list is generated listing all tiles that have at least a portion of a patch that is not hidden. Thus culling each tessellated primitive determined to be hidden and which does not form part of the display list.

Description

TESSELLA11NG PATCHES OF SURFACE DATA IN TILE BASED COMPUTER
GRAPHICS RENDERING
FIELD OF INVENTION
The present invention relates to a method and system for culling hidden tessellated primtives in a tile based computer graphics rendering system.
BACKGROUND TO THE INVENTION
Tile based rendering is a known technique for rendering 2D or 3D computer graphics images. A rendering space is sub-divided into a plurality of regions called tiles or blocks, which are typically rectangular, and each comprises a plurality of pixels. The rendering space may correspond to an image for display on a screen, but other render targets, such as texture data in memory, are also possible. Tiles can be various sizes, but a typical size is for example 16 x 16 pixels. In a high screen resolution image there are typically 1280 x 1024 pixels. Therelore, a high screen resolution image may be sub-divided into 5120 tiles (each comprising 16 x 16 pixels).
In tile based computer graphics systems primitive data is typically read from memory and transformed into screen space. Primitives are often polygons, for example triangles, but may be lines or points. A display list is then generated, for each tile, indicating the primitives, if any, which are located either wholly or partially within the tile. The indication often comprises an identifier or index for each primitive, which references or provides a pointer to geometrical data associated with the primitive stored in a parameter memory.
The display lists are stored in memory.
Each tile is then rendered independently using its display list.
For each tile, the primitives identified in the respective display list are processed and hidden surface removal may be performed. The resultant pixel data for visible fragments is then passed to a shading unit which applies textures and shading to each visible pixel within an object. After final pixel values have been determined for each pixel in the tile, the pixel data for the tile is written to memory for display on an output device.
Hidden surface removal typically uses a technique known as "z buffering". In this technique, depth values are calculated for each primitive at every pixel in the tile covered by the primitive. Then, processing each primitive in turn, the depth values of each primitive are compared to the depth values for the respective pixels stored in a "Z buffer". If the depth value of a new primitive is closer to the eye or viewpoint than the presently stored depth value (for the surface of the previously processed primitives which is presently visible at that pixel), then the depth value for that pixel, and the other values for that pixel, are replaced with the values of the new primitive at the respective pixel. If the depth value of a new primitive is further from the eye or viewpoint than the presently stored depth value, the values, including the depth value, of that pixel remain unchanged.
Tessellation is a known technique for adding texture to a low detail model, generally referred to in the computer graphics industry as a patch of surface data. A patch of surface data is split into a plurality of primitives which are then optionally displaced from the surface of the patch to derive a plurality of tessellated primitives. The primitives may be displaced by application of a user programmable function andtor in dependence on a displacement height map. The tessellated primitives may then be tiled and rendered as described above.
Tessellation is a useful tool which is being used more and more widely in the computer graphics industry. However, it will be appreciated that tesseHating a patch of surface data can substantially increase the amount of computation which is required to render an image.
Each tessellated patch of surface data may comprise thousands of tessellated primitives, which need to be processed and which may also need to be stored in memory.
The applicant has appreciated that it would be desirable to decrease the amount of data transfer, data storage, and processing required to render a tile and, in particular, a tile comprising tesseflated primitives.
SUMMARY OF INVENTION
According to the present invention, there is provided a method of culling in a tile based graphics system, comprising: subdividing a rendering space into a plurality of tiles; reading a patch of surface data; analysing at least a portion of the patch to determine data representing a bounding depth value evaluated over at least one tile; for each tile within which the patch is located, using the data representing the bounding depth value to determine whether the patch is hidden in the tile; and rendering at least a portion of the patch if the patch is determined not to be hidden in at least one tile.
Embodiments of the invention have the advantage that a patch can be culled from a tile without having to process and perform a depth cull for each individual tessellated primitive.
Thus, the invention enables the amount of processing and memory bandwidth required to render an image comprising a patch of surface data to be reduced.
Preferably the method further comprises tessellating the patch of surface data to derive a plurality of tessellated primitives; and wherein the at least a portion of the patch comprises at least some of the plurality of tessellated primitives. This method has the advantage that any displacement of the tessellated primitives from the surface of the patch can be taken into account when determining the data representing the bounding depth value evaluated over the at least one tile, in a simple manner.
The analysing step may comprise deriving a bounding depth value for each of the plurality of tessellated primitives; and comparing the bounding depth values for the at least some of the plurality of tessellated primitives to derive the data representing the bounding depth value evaluated over the at least one tile.
In a preferred embodiment the analysing step further comprises, for each of the plurality of tessellated primitives, using the bounding depth value for the tessellated primitive to determine whether the tessellated primitive is hidden in the at least one tile, wherein the at least some of the tessellated primitives comprise the tessellated primitive if it is determined not to be hidden in the at least one tile. This embodiment has the advantage that only bounding depth values of those tessellated primitives that are not hidden may be used to determine the data representing the bounding depth value for the patch. This means that the bounding depth value for the patch is likely to represent a smaller range of depth values, which increases the likelihood that the patch can be culled from a tile based on a depth test performed using this bounding depth value.
Further, in a preferred embodiment this method may further comprise culling each tessellated primitive determined to be hidden in the least one tile such that it is not indicated in a display list for the at least one tile. This enables memory space to be saved.
3D The bounding depth value evaluated over the at least one tile may be a bounding depth value for the entire patch. Alternatively, a bounding depth value may be determined for each respective tile the patch is located within. In this case, the analysing step may comprise, for each tile the patch is located within, analysing a corresponding portion of the patch to determine data representing a bounding depth value evaluated over that tile.
Thus, in this case, if the patch is located over a plurality of tiles, the bounding depth value evaluated over the least one tue will comprise a plurality of bounding depth values (each evaluated over a respective tile).
The bounding depth value evaluated over the at least one tile may comprise a maximum bounding depth value and or a minimum bounding depth value.
The data representing the bounding depth value evaluated over the at least one tile may be used to determine whether the patch is hidden in a tile before or after the patch is indicated in the display list for the tile.
A first embodiment comprises, for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile if the patch is determined not to be hidden in the tile. This embodiment has the advantage that, not only can the amount of processing and memory bandwidth required to render the image be reduced, but the amount of memory space required to store the display lists for the tiles can be reduced, since if the patch is determined to be non-visible or hidden the patch need not be indicated in the display list for that tile.
This embodiment may further comprise: writing the data representing the bounding depth value to a memory; and, for each tile whose display list indicates at least a portion of the patch, reading the data representing the bounding depth value from the memory and using the data representing the bounding depth value to determine whether the patch is hidden in the tile.
An alternative, second embodiment comprises: for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile; writing the data representing the bounding depth value evaluated over the at least one tile to a memory; and wherein the step of, for each tile within which the patch is located, using the data representing the bounding depth value to determine whether the patch is hidden in the tile further comprises: reading the data representing the bounding depth value from the memory.
These embodiments require that the data representing the bounding depth value evaluated over the at least one tile is stored in memory, which takes up memory space. However, this embodiment has the significant advantage that data representing a bounding depth value for the patch can be used to perform a depth test for the patch without having to process the patch of surface data during rendering of the tile. Thus, this embodiment enables memory bandwidth, as well as processing power, to be saved similarly to the first embodiment, since for example if the patch can be culled from a tile, geometric data associated with that patch does not need to be read from a parameter memory.
This second embodiment may also comprise an additional step, before the step of, for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile, comprising using the data representing the bounding depth value evaluated over the at least one tile to determine whether the patch is hidden in a tile and, if not, culling the patch from the tile such that it is no longer located within the tile.
A corresponding apparatus is also provided.
BRIEF BESCRIPTION OF THE FIGURES
Embodiments of the present invention will now be described by way of example only with reference to the accompanying drawings in which: Figure 1 is a schematic block diagram showing apparatus embodying the invention; Figure 2, 2a and 2b illustrates determination of whether a tessellated patch of surface data may be culled from a tile: Figure 3 is a flow chart showing the method steps in one embodiment of the invention; Figure 4 is a flow chart showing the method steps in another embodiment of the invention; Figure 5 is a flow chart showing an example method for determining a bounding depth range for a series of primitives such as triangles; and Figure 6 is a flow chart showing an example method for determining a bounding depth range for an object such as a surface patch.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS OF THE INVENTION
The applicant's patent application publication No. GB 2480012 discloses a method and system for tessellating a patch of surface data in a tile based computer graphics rendering system.
In this system, a patch of surface data is tessellated to derive a plurality of tessellated primitives as described above. Then, for each tile, each tesseflated primitive located at least partially within the tile is indicated in the display list for the tile, for example by storing one or more indices for each tessellated primitive. However, instead of storing geometrical data associated with each individual tessellated primitive in parameter memory, geometrical data is stored for the patch of surface data, from which the tessellated primitives can subsequently be re-derived. It will be appreciated that this method substantially reduces the amount of data which needs to be stored in parameter memory, although at the cost of increasing the amount of computation required to render each tile.
To render each tile, the patch of surface data is re-tessellated to re-derive the tessellated primitives identified in the respective display list. Each tessellated primitive is then processed as described above.
Methods and systems for culling primitives which are entirely hidden in a tile (that is, primitives which are not visible at any pixels in the tile) without requiring all of the processing required by typical hidden surface removal techniques are known, for example as disclosed in the applicant's GB patent no. 2,378,108.
In this method, primitives which are entirely hidden in a tile are culled before hidden surface removal is performed by comparing the depth of each primitive to the range of depths stored in the "z buffer" for the tile. For example, the minimum depth of a primitive (the depth closest to the viewpoint) may be compared to the greatest or maximum depth indicated by the depth values stored in the "z buffer" (i.e. the depth furthest from the viewpoint). If the minimum depth of the primitive is further from the viewpoint than the maximum depth value in the "z buffer", then it is known that that primitive must be entirely hidden in the tile without having to calculate and compare depth values for that primitive at every pixel in the tile. Thus, this method reduces the amount of processing required to render each tile.
The term "object" is used in the following to describe a graphical element such as a primitive or a model generally referred to within the computer graphics industry as a "patch" of surface data.
The examples below are illustrated in the context of a graphics system in which a depth compare mode of less than" is being used. In other words, objects are visible at points where their depth is less than that of other objects at that point. However, it will be understood that graphics systems can use a variety of different depth compare modes, and interchange between them. Other example depth compare modes include "greater than", greater than or equal", "less than or equal", "equal", "not equal', "always", and "never".
The example of a "less than" depth compare is merely used for clarity, and the techniques below can be readily applied for any suitable depth compare mode.
Figure 1 is a schematic diagram showing apparatus for generating and shading a computer graphics image using tessellation in one embodiment of the present invention. The parts that comprise this apparatus may be implemented as circuits in a processor such as a graphics processor unit (GPU), or may be implemented as a program running on a programmable device such as a CPU or CPU? Patch of surface data 10 is passed to a tessellation processor 20 which divides the patch into a plurality of primitives and optionally displaces the primitives from the surface of the patch by applying a user programmable function or in dependence on a displacement or texture map to derive a plurality of tessellated primitives.
A patch is typically a parametric function defined by a set of control points which describe the shape of a curve with respect to parameter 1' (for a curved line) or domain coordinates u,v' (for a curved surface). One example of a patch used in computer graphics is a Bezier patch, but others exist as will be appreciated by a person skilled in the art.
As will be known to those skilled in the art, tessellation of patches of surface data in a graphics pipeline can be supported by a number of application programming interfaces (APIs), for example, Microsoft® Direct 3D® 11 API. MicrosofE Direct 3D® 11 API supports displacement mapping, whereby the tessellated primitives may be at a displaced location from the surface of the patch.
Once the tessellated primitives are derived they are passed to a minimum and or maximum depth calculator 30 which analyses the patch to determine bounding depth values.
Optionally, the primitives may first be passed to a clipping and culling unit (not shown) which removes, for example, any back-facing, off-screen or non-visible primitives, and then the remaining primitives may be passed to a projection unit (also not shown) which transforms the primitives into screen space.
In this embodiment, the minimum and or maximum depth calculator 30 determines the minimum and or maximum depth of the entire tessellated patch of surface data. That is, the depth of the tessellated patch of surface data furthest from the viewpoint and or the depth of the tessellated patch of surface data closest to the viewpoint. This may be done by determining and comparing the depths of each of the tessellated primitives making up the tessellated patch of surface data, as they are derived. There is therefore no need to store the depths of each of the tessellated primitives at any one time. Determining the depth of each of the tessellated primitives may be done using well known methods, examples of which are given below Determining the minimum and or maximum depths of a patch from the tessellated primitive data ensures that the minimum and or maximum depths incorporate the effect of any displacement mapping that may have been applied to the patch. Other methods of determining minimum and or maximum depths for a patch are possible, as will be appreciated by those skilled in the art. For example, a bounding volume which encloses the object may be determined, from which minimum and maximum bounding depth values can be determined using known techniques. Bounding volumes can be many shapes, for example spheres, cylinders or rectangular boxes. Many of the surface patches used in computer graphics, such as Bézier and B-spline types, have the property that they lie completely within the convex huH of their control points. A bounding volume may therefore be determined by analysis of the patches prior to tessellation It will be appreciated that the accuracy of the bounding depth values determined for the object will depend on how closely the bounding volume surrounds the enclosed object, and that care must be taken to ensure that the effects of displacement mapping are taken into consideration.
In an alternative embodiment, minimum and or maximum depth data may be determined by analysis of the respective parts of the patch of surface data located within each tile.
Patches of surface data may be very large and often extend across more than one tile, so minimum and or maximum depth data determined for the respective parts of a patch located within a single tile may represent a significantly smaller range of depth values than minimum and or maximum depth data determined for the whole patch. A smaller range of depth values increases the chance that the patch may be culled from the tile before rendering. The skilled person will appreciate that a variety of methods exist for determining minimum and maximum depth data for the parts of a patch located within a tile, and these include methods that use bounding volumes and the convex hull properties of the patch.
The presence in the system of a tiling unit 40, which is able to determine whether a primitive is located wholly or partially within a tile, makes a method of determining minimum and or maximum depth data from the tiled tessellated primitives particularly appropriate. It will be appreciated that, in this case, tiling unit 40 must determines which tessellated primitives, and therefore which part of the tessellated patch of surface data, is located within each tile. The depths of each of the tessellated primitives making up the tessellated patch of surface data within the tile may be determined arid compared to derive minimum and or maximum depth data for the respective parts of the tessellated patch of surface data located within each tile.
Tiling unit 40 divides the rendering space into a plurality of tiles, each comprising a plurality of image pixels. Tiles are typically rectangular but can be other shapes.
For each tile, tiling unit 40 then determines whether each of the tessellated primitives is located (either partially or wholly) within that tile. That is, whether at least part of the tessellated primitive is located within a viewable region of the tile. This can be done using a number of well-known techniquet In some embodiments, tiling unit 40 may comprise a depth test processor 50. When it has been determined that an object is located within a tile, the depth test processor compares a minimum or maximum depth value for the object with a depth threshold value for the tile.
The comparison test is performed according to the depth compare mode of the object, such that the comparison determines whether the object is potentially visible within the tile, or whether it is hidden. The depth test processor is typically not a per-pixel test, and so cannot determine that an object is definitely visible. It can, however, determine that an object is entirely hidden by other objects in the tile. If hidden the object can be culled and is not indicated in the display list for that tile.
For example, as described in the applicant's GB patent No. 2,378,108, the range of depths (minimum and/or maximum depth) of visible primitives in the "z buffer" for a tile may be fed from hidden surface removal unit 110 back to tiling unit 40, in a system which uses "partial rendering'. As will be understood by those skilled in the art in a "partial rendering" system some objects located within a tile are indicated in the display list for that tile, and then those objects are rendered using the "z buffering" technique described above. Subsequently, further objects located within the tile are indicated in the display list for that tile, and then rendered. The range of depths in the "z buffer" may be fed back before those subsequent objects are indicated in the display list for the tile, such that they may be used as depth threshold values in a depth test.
Alternatively, tiling unit 40 may determine minimum and or maximum depth threshold values. It is clearly not desirable for tiling unit 40 to duplicate all of the depth work that will be carried out during hidden surface removal. However, as described in the applicants unpublished patent application no. GB 1223089.2, the tiling unit 40 may for example determine conservative minimum and or maximum depth threshold values for objects added to the display list for a tile to be used in a coarse depth test.
For example, in a "less than" depth compare mode a maximum depth threshold for a tile may be updated each time an object covers the entire tile, if that object has a maximum depth closer to the viewpoint than the presenfly stored maximum depth threshold for visible primitives in the tile. In this case, the maximum depth threshold for the tile may be updated to the maximum depth value of that object. This is because, since the object covers the entire tile, it is known that the maximum depth threshold of visible primitives in the tile must be, at most, the maximum depth value of that object. So, if the maximum depth value of the object is closer to the viewpoint than the presently stored maximum depth threshold for the tile, then the maximum depth value for the tile can be updated. A minimum depth threshold for a tile may also be determined from the objects located in the tile.
Figure 2 shows an example screen-port image 200 comprising a plurality of tiles 205 and a tesseflated patch of surface data 210. Figures 2a and 2b are diagrams showing minimum and maximum depth values of visible objects in an example one of the tiles. The furthest point from the viewpoint is assigned the depth value 1.0 and the closest point the depth value 0.0. The range of depth values of visible objects, which may be used as threshold values for depth tests, are indicated by solid lines. The minimum and maximum depth values of two tessellated example patches, 220 and 230, are indicated by the dashed lines.
In these examples, it can be seen that the depth values for the patches are slightly conservative, as may be the case for certain methods of deriving the values.
In this example, an object is culled if it is determined to be hidden behind other objects in the image. The key depth therefore is the minimum depth value for the object. As in the example of Figure 2a, if the minimum depth value of the object (the depth closest to the viewpoint) is closer to the viewpoint than the maximum depth threshold for the tile (i.e. the depth furthest from the viewpoint) then at least some of the object may be visible in that tile. The object is therefore not culled from the tile. In the example of Figure 2b, however, it is seen that the minimum depth value of the object (the depth closest to the viewpoint) is further from the viewpoint than the maximum depth threshold for the tile. It is therefore known that this tessellated patch of surface data must be hidden in the tile. This object can therefore be culled from this tile.
In one embodiment the depth test is performed using a minimum or maximum depth value determined for a patch of surface data. The depth test determines whether the whole patch is hidden in the tile. In another embodiment, the depth test is performed using a minimum or maximum depth value determined for a primitive from the tessellated patch of surface data. In this case the depth test determines whether the primitive is hidden in the tile. Other primitives from the same tessellated patch of surface data may be tested independently to determine whether they are hidden in the tile.
Other methods for using the minimum and or maximum depth of the tessellated patch of surface data to determine whether the tessellated patch of surface data is hidden in a tile may occur to those skilled in the art.
If it is determined that an object cannot be culled from a tile, or if no depth test is carried out at this stage, the object is indicated in the display list for that tile. This may involve storing one or more indices for each tessellated primitive in the display list for the tile, which provide a pointer to geometrical data associated with the tessellated primitives stored in parameter memory 80. In this example, as described in the system disclosed in GB patent application publication No. 2480012, rather than storing geometric data for each of the tessellated primitives in parameter memory 80, data for the patch of surface data is stored from which the tessellated primitives can subsequently be re-derived during rendering. For example, where the patch is a Bezier patch, the data may include the control points for the patch together within the tessellation factors applied.
If it is determined that the whole tessellated patch of surface data can be culled from a tile, then no tessellated primitives are indicated in the display list for that tile. It should be noted, however, that the geometric data for the patch of surface data may still be stored in parameter memory 80, if the tessellated patch of surface data is potentially visible in other tiles.
After the display lists for each tile have been derived, the display lists are stored in memory 60. Preferably, even if a depth test has already taken place, the minimum and or maximum depth data for the tessellated patch of surface data is stored in memory 70.
To render each tile, the display list for the tile is read. For tiles whose display list references the paich of surface data, before any further processing takes place, the minimum and or maximum depth data for that patch of surface data is read from memory by depth test processor 90. The depth test processor 90 may then perform a first or further depth test, for example using the method described above. Other methods are possible and will occur to those skilled in the art.
It will be appreciated that performing a depth test at this stage may be more accurate than performing a depth test prior to tiling, and therefore may be more likely to result in the patch of surface data being culled from a tile. This is because minimum and or maximum depth threshold values for the tile, with which the minimum and or maximum depth values of the tessellated patch may be compared, may be determined directly from the z buffer of the hidden surface removal unit 110. Minimum and or maximum depth thresholds determined in this way may be more accurate than those derived in the tiling unit 40 because they are not affected by factors such as conservative bounding boxes, or the derivation of threshold data only from objects that cover a whole tile. Thus, even if a depth test were performed prior to tiling, if the patch has not been culled from aU the tiles, it may be advantageous to store the minimum/maximum depth values for the patch and perform an additional depth test after tiling, before rendering each tile, even though this has the disadvantage of requiring additional memory space to store the mm/max data for the patch.
If it is determined that the patch of surface data can be culled from a tile, then, for that tile, advantageously there is no need to process any tessellated primitives associated with that patch of surface data. There is, therefore, no need to re-tessellate the patch of surface data to re-derive those tessellated primitives indicated in the display list for that tile.
If it is determined that the patch of surface data may be visibe in the tile, then tessellation processor 100 reads the geometrical data associated with the patch of surface data and re-tessellates the patch of surface data to re-derive each of the tessellated primitives identified in the display list for that tile.
Each of these tessellated primitives is then processed to render the image using well known techniques, as described above.
Each of the tessellated primitives may be passed to hidden surface removal unit 110, which removes any surfaces which are not visible in the tile, and the resulting pixel data may be passed to a texture and shading unit 120 which applies pixel or texture shading before the final pixel values for display are written to memory.
Figure 3 is a flow diagram showing one embodiment of the present invention. At step 300 a patch of surface data is tessellated to derive a plurality of tessellated primitives, which may be displaced from the surface of the patch of surface data. At step 310 minimum and or maximum depth data is then determined for the tessellated patch of surface data from the tessellated primitives. At step 320, for each tile the tessellated patch of surface data is located within, the minimum and or maximum depth data for the tessellated patch of surface data may be used to determine whether the tessellated patch of surface data is hidden in the tile If it is determined that the tessellated patch of surface data is hidden in the tile, at step 340 the tessellated patch of surface data is culled from that tile. If it is determined that the tessellated patch of surface data is not hidden in the tile, then at step 330 a display list is derived for that tile indicating those tessellated primitives which are located within the tile In addition, the minimum and or maximum depth data may be stored for the tessellated patch of surface data. Display lists and minimum and or maximum depth data are stored in a memory 350.
To render each tile, at step 360 for each tile the tessellated patch of surface data is located within, the minimum and or maximum depth data for the patch of surface data is read and used to determine whether the tessellated patch of surface data is hidden in that tile. If it is determined that the tessellated patch of surface data is hidden in the tile, then at step 380 that tessellated patch of surface data is culled from the tile and no further processing takes place. If it is determined that the tessellated patch of surface data is riot hidden, then at step 390 each of the tessellated primitives located within that tile is processed to render the tile. In the embodiment described above this includes re..tessellating the patch of surface data stored in memory to re-derive at least those tessellated primitives indicated in the display list for the tile, and then processing each of those tessellated primitives using well known techniques.
Figure 4 is a flow diagram showing another embodiment of the present invention. At step 400, a patch of surface data is tessellated to derive a plurality of tessellated primitives, which may be displaced from the surface of the patch of surface data. At step 410, for each tile that a tessellated primitive is located within, minimum and or maximum depth values for the primitive may be used to determine whether the primitive is hidden in the tile, If it is determined that the tessellated primitive is hidden in the tile, at step 430 the tessellated primitive is culled from that tile. If it is determined that the tessellated primitive is not hidden in the tile, then at step 420 the minimum and or maximum depth data for the non-hidden primitives in the surface patch may be determined. At step 440 a display list is derived for the tile indicating those tesseflated primitives which are not hidden and which are located within the tile. In addition, the minimum and maximum depth data may be stored for the tessellated patch of surface data. Display lists and minimum and or maximum depth data are stored in memory 450.
To render each tile, at step 460, for each tile the tessellated patch of surface data is located within, the minimum and or maximum depth data for the patch of surface data is read and used to determine whether the tessellated patch of surface data is hidden in that tile. If it is determined that the tessellated patch of surface data is hidden in the tile, then at step 480 that tessellated patch of surface data is culled from the tile and no further processing takes place. If it is determined that the tessellated patch of surface data is not hidden, then at step 490 each of the tessellated primitives located within that tile is processed to render the tile. In the embodiment described above this includes re-tessellating the patch of surface data stored in memory to re-derive at least those tessellated primitives indicated in the display list for the tile, and then processing each of those tessellated primitives using well known techniques.
Figure 5 is a flow diagram showing one method that may be used by a minimum and or maximum depth calculator, 30, for determining a bounding depth value for a set of one or more primitives, such as those that might be produced by tessellation of a patch of surface data. In this example the determination of a minimum depth value is shown.
At 500 a primitive is read, and at 510 a vertex is read from the primitive. Typically a vertex comprises coordinates X, Y, and Z, where the Z coordinate is the depth value. At 520, if the vertex is the first vertex from the first primitive in the set of primitives, the Z coordinate of the vertex is stored at 530. This provides an initial value for further comparisons. For all subsequent vertices, at 540, the Z coordinate of the vertex is compared with a Z value previously stored at 530 to determine whether it is smaller. If smaller, the Z coordinate of the vertex is stored at 530, replacing any previously stored value. At 550 a test is made to determine whether the vertex is the last vertex in the primitive. If not the flow returns to 510, and the next vertex from the primitive is processed in a similar way. After processing the last vertex in a primitive, at 560, a test is made to determine whether the primitive is the last primitive in the set. If not the flow returns to 500, and the next primitive is read and processed. After processing the last primitive in the set, the Z value stored at 530 is the smallest 7 value of all the vertices examined.
The skilled person will appreciate that the method of Figure 5 may be modified to determine a maximum bounding depth value for a set of primitives, or to produce both minimum and maximum bounding depth values for a set of primitives while making only one pass through the primitive data.
Figure 6 is a flow diagram showing a method that may be used by a minimum and or maximum depth calculator, 30, for determining a bounding depth value for a patch of surface data. In this example a minimum depth value is determined from vertices which are the control points of the surface patch. The control points of the surface patch form a convex hull which is known to bound the patch.
At 600 an object is read, and at 610 a vertex is read from the object. At 620 the vertex is optionally tested for relevance, since it is well known that for curves such as the B-spline, the curve is bounded by the convex hull of a number of neighbouring control points and that the number of neighbouring points that define the convex hull depends on the degree of the curve. The relevance test may be particularly useful when determining a bounding volume for the part of a surface patch that is located within a particular tile, since only the control points in and around that tile define the convex hull for the surface patch inside the tile. A bounding volume determined from a smalter number of control points may be smaller, and therefore provide more effective culling, than a bounding volume computed using all control points for the surface patch. If it is determined that a vertex is not relevant the flow continues to 660.
At 630, if the vertex is the first relevant vertex from the surface patch, the Z coordinate of the vertex is stored at 640. This provides an initial value for further comparisons. For all subsequent vertices, at 650, the Z coordinate of the vertex is compared with a Z value previously stored at 640 to determine whether it is smaller. If smaller, the Z coordinate of the vertex is stored at 640, replacing any previously stored value.
At 660, a test is made to determine whether the vertex is the last vertex in the surface patch. If not, flow returns to 610. After processing the last vertex in the surface patch, the Z value stored at 640 is the smallest Z value of all the relevant vertices examined.
The skilled person will appreciate that the method of Figure 6 may be modified to determine either a maximum, or both minimum and maximum bounding depth values, as required.

Claims (23)

  1. CLAIMS1. A method of culling in a tile based graphics system, comprising subdividing a rendering space into a plurality of tiles; reading a patch of surface data; analysing at least a portion of the patch to determine data representing a bounding depth value evaluated over at least one tile; for each the within which the patch is located, using the data representing the bounding depth value to determine whether the patch is hidden in the tile; and rendering at least a portion of the patch if the patch is determined not to be hidden in at least one tile.
  2. 2.. A method according to claim 1, further comprising tessellating the patch of surface data to derive a plurality of tessellated primitives; and wherein the at least a portion of the patch comprises at east some of the plurality of tessellated primitives.
  3. 3. A method according to claim 2, wherein the analysing step further comprises deriving a bounding depth value for each of the plurality of tessellated primitives; and comparing the bounding depth values for the at least some of the plurality of tessellated primitives to derive the data representing the bounding depth value evaluated over the at least one tile.
  4. 4. A method according to claim 3, wherein the analysing step further comprises, for each of the plurality of tessellated primitives, using the bounding depth value for the tessellated primitive to determine whether the tessellated primitive is not hidden in the at least one tile, wherein the at least some of the tessellated primitives comprises the tessellated primitive if it is determined not to be hidden in the at least one tile.
  5. 5. A method according to any preceding claim, wherein the bounding depth value evaluated over the at least one tile is a bounding depth value for the entire patch.
  6. 6. A method according to any preceding claim, wherein the analysing step comprises, for each tile the patch is located within, analysing a corresponding portion of the patch to determine data representing a bounding depth value evaluated over that tile.
  7. 7. A method according to any preceding claim, wherein the bounding depth value evaluated over the at least one tile comprises a maximum bounding depth value and or a minimum bounding depth value.
  8. 8, A method according to any preceding claim, further comprising: for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile if the patch is determined not to be hidden ri the tile.
  9. 9. A method according to claim 8, further comprising: writing the data representing the bounding depth value to a memory; and, for each tile whose display list indicates at least a portion of the patch, reading the data representing the bounding depth value from the memory and using the data representing the bounding depth value to determine whether the patch is hidden in the tile.
  10. 10. A method according to any of claims ito 7, further comprising: for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile; writing the data representing the bounding depth value evaluated over the at least one tile to a memory; and wherein the step of, for each tile within which the patch is located, using the data representing the bounding depth value to determine whether the patch is hidden in the tile further comprises: reading the data representing the bounding depth value from the memory.
  11. ii. A method according to claim 10, when dependent on claim 4, further comprising culling each tessellated primitive determined to be hidden in the at least one tile such that it is not indicated in the display List for the at least one tile.
  12. 12. A method according to claim 10 or 11, further comprising an additional step, before the step of, for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile, comprising using the data representing the bounding depth value evaluated over the at least one tile to determine whether the patch is hidden in a tile and, if so, culling the patch from the tile such that it is no longer located within the tile.
  13. 13. A system for culling in a graphics system having a rendering space subdivided into a plurality of regions, each comprising a plurality of pixels, the system comprising: an interface configured to receive a patch of surface data; a depth calculator configured to analyse at least a portion of the patch to determine data representing a bounding depth value evaluated over at least one tile; a depth test processor configured to, for each tile within which the patch is located, use the data representing the bounding depth value to determine whether the patch is hidden in the tile; and a renderer configured to render at least a portion of the patch if the patch is determined not to be hidden in at least one tile.
  14. 14. A system according to claim 13, further comprising a tessellation processor configured to tessellate the patch of surface data to derive a plurality of tessellated primitives; and wherein the at least a portion of the patch comprises at least some of the p'urality of tessellated primitives.
  15. 15. A system according to claim 14, wherein the depth calculator further comprises comparator logic configured to derive a bounding depth value for each of the plurality of tessellated primitives and to compare the bounding depth values for the at least some of the plurality of tessellated primitives to derive the data representing the bounding depth value evaluated over the at least one tile.
  16. 16. A system according to claim 15, wherein the depth test processor is further configured to, for each of the plurality of tessellated primitives, use the bounding depth value for the tessellated primitive to determine whether the tessellated primitive is hidden in the at least one tile; and wherein the comparator logic is configured to compare the bounding depth value of the tessellated primitive if that tessellated primitive is determined not to be hidden in the at least one tile.
  17. 17. A system according to any of claims 13 to 16, wherein the bounding depth value evaluated over the at least one tile is a bounding depth value for the entire patch.
  18. 18. A system according to any of claims 13 to 17 wherein the depth calculator is configured to, for each tile the patch is located within, analyse a corresponding portion of the patch to determine data representing a bounding depth value evaluated over that tile.
  19. 19. A system according to any of claims 13 to 18 wherein the bounding depth value evaluated over the at least one tile comprises a maximum bounding depth value and or a minimum bounding depth value.
  20. 20. A system according to any of claims l3to 19, further comprising a display list generator configured to, for each tile within which the patch is located, indicate at least a portion of the patch in a display list for the tile if the patch is determined not to be hidden in the tile.
  21. 21. A system according to claim 20, further comprising a write interface configured to: write the data representing the bounding depth value to a memory; a read interface configured to, for each tile whose display list indicates at least a portion of the patch, read the data representing the bounding depth value from the memory; and a depth test processor configured to, for each tile whose display list indicates at least a portion of the patch, use the data representing the bounding depth value to determine whether the patch is hidden in the tile.
  22. 22. A system according to any of claims 13 to 19, further comprising a display list generator configured to, for each tile within which the patch is located, indicate at least a portion of the patch in a display list for the tile; a writer interface configured to write the data representing the bounding depth value evaluated over the at least one tile to a memory; and wherein the depth test processor is further configured to read the data representing the bounding depth value from the memory.
  23. 23. A system according to claim 22, when dependent on claim 16, further comprising object culling logic configured to cull each tessellated primitive which is determined to be hidden in the at least one tile such that it is not indicated in the display list for the at least at least one tile.
    24, A system according to claim 22 or 23, wherein the depth test processor is further configured to use the data representing the bounding depth value evaluated over the at least one tile to determine whether the patch is hidden in a tile, and the system further comprises object culling logic configured to cull the patch from the tile such that the patch is no longer located within that tile, if the patch is determined to be hidden in that tile, before the display list generator, for each tile within which the patch is located, indicates at least a portion of the patch in a display list for the tile.Amendment to the claims have been filed as followsCLAIMS1. A method of culling hidden tessellated primitives in a tile based graphics system, comprising: subdividing a rendering space into a plurality of tiles; reading a patch of surface data; tessellating the patch of surface data to derive a plurality of tessellated primitives; analysing at least a portion of the patch comprising at least some of the tessellated primitives to determine data representing a bounding depth value evaluated over at least one tile: for each tile within which the patch is located, using the data representing the bounding depth value to determine whether the patch is hidden in the tile; and rendering at least a portion of the patch if the patch is determined not to be hidden in at least one tile.2. A method according to claim 1, wherein the analysing step further comprises deriving a bounding depth value for each of the plurality of tessellated primitives; and comparing the bounding depth values for the at least some of the plurality of tessellated primitives to derive the data representing the bounding depth value evaluated over the at least one tile.3. A method according to claim 2, wherein the analysing step further comprises, for each of the plurality of tessellated primitives, using the bounding depth value forth! tessellated primitive to determine whether the tessellated primitive is not hidden in the at least one tile, wherein the at least some of the tessellated primitives *2. 25 comprises the tessellated primitive if it is determined not to be hidden in the at least one tile.4. A method according to any preceding claim, wherein the bounding depth value evaluated over the at least one tile is a bounding depth value for the entire patch.5. A method according to any preceding claim, wherein the analysing step comprises, for each tile the patch is located within, analysing a corresponding portion of the patch to determine data representing a bounding depth value evaluated over that tile.6. A method according to any preceding claim, wherein the bounding depth value evaluated over the at least one tile comprises a maximum bounding depth value and or a minimum bounding depth value.7. A method according to any preceding claim, further comprising: for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile if the patch is determined not to be hidden in the tile.8. A method according to claim 7, further comprising: writing the data representing the bounding depth value to a memory; and, for each tile whose display list indicates at least a portion of the patch, reading the data representing the bounding depth value from the memory and using the data representing the bounding depth value to determine whether the patch is hidden in the tile.9. A method according to any of claims ito 6, further comprising: for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile; writing the data representing the bounding depth value evaluated over the at least one tile to a memory; and wherein the step of, for each tile within which the patch is located, using the data representing the bounding depth value to determine whether the patch is hidden in the tile further comprises: reading the data representing the bounding depth value from the memory.10. A method according to claim 9, when dependent on claim 4, further comprising culling each tessellated primitive determined to be hidden in the at least one tile.11. A method according to claim 9 or 10, further comprising an additional step, before the step of, for each tile within which the patch is located, indicating at least a portion of the patch in a display list for the tile, comprising using the data *:**s 30 representing the bounding depth value evaluated overthe at least one tile to determine whether the patch is hidden in a tile and, if so, culling the patch from the * .. tile.S.....* 12. A system for culling hidden tessellated primitives in a graphics system having a :.:::. 35 rendering space subdivided into a plurality of regions, each comprising a plurality of pixels, the system comprising: an interface configured to receive a patch of surface data; a tessellation processor configured to tessellate the patch of surface data to derive a plurality of tessellated primitives; a depth calculator configured to analyse at least a portion of the patch comprising at least some of the plurality of tessellated primitives to determine data representing a bounding depth value evaluated over at least one tile; a depth test processor configured to, for each tile within which the patch is located, use the data representing the bounding depth value to determine whether the patch is hidden in the tile; ancS a renderer configured to render at least a portion of the patch if the patch is determined not to be hidden in at least one tile.13. A system according to claim 12, wherein the depth calculator further comprises comparator logic configured to derive a bounding depth value for each of the plurality of tessellated primitives and to compare the bounding depth values for the at least some of the plurality of tessellated primitives to derive the data representing the bounding depth value evaluated over the at least one tile.14. A system according to claim 13, wherein the depth test processor is further configured to, for each of the plurality of tessellated primitives, use the bounding depth value for the tessellated primitive to determine whether the tessellated primitive is hidden in the at least one tile; and wherein the comparator logic is configured to compare the bounding depth value of the tessellated primitive if that tessellated primitive is determined not to be hidden in the at least one tile.15. A system according to any of claims 12 to 14, wherein the bounding depth value evaluated over the at least one tile is a bounding depth value for the entire patch.:.. 25 16. A system according to any of claims 12 to 15 wherein the depth calculator is * configured to, for each tile the patch is located within, analyse a corresponding * portion of the patch to determine data representing a bounding depth value evaluated over that tile. 30 17. A system according to any of claims l2to 16 wherein the bounding depth value : ** evaluated over the at least one tile comprises a maximum bounding depth value and or a minimum bounding depth value. enC18. A system according to any of claims 12 to 17, further comprising a display list generator configured to, for each tile within which the patch is located, indicate at least a portion of the patch in a display list for the tile if the patch is determined not to be hidden in the tile.19. A system according to claim 16, further comprising a write interface configured to: write the data representing the bounding depth value to a memory; a read interface configured to, for each tile whose display list indicates at least a portion of the patch, read the data representing the bounding depth value from the memory; and a depth test processor configured to. for each tile whose display list indicates at least a portion of the patch, use the data representing the bounding depth value to determine whether the patch is hidden in the tile.20. A system according to any of claims 12 to 17, further comprising a display list generator configured to, for each tile within which the patch is located, indicate at least a portion of the patch in a display list for the tile; a writer interlace configured to write the data representing the bounding depth value evaluated over the at least one tile to a memory; and wherein the depth test processor is further configured to read the data representing the bounding depth value from the memory.21 * A system according to claim 20, when dependent on claim 16, further comprising object culling logic configured to cull each tessellated primitive which is determined to be hidden in the at least one tile.22. A system according to claim 20 or 21, wherein the depth test processor is further configured to use the data representing the bounding depth value evaluated over the at least one tile to determine whether the patch is hidden in a tile, and the system further comprises object culling logic configured to cull the patch from the tile such that the patch is no longer located within that tile, if the patch is determined to be hidden in that tile, before the display list generator, for each tile within which the patch is located, indicates at least a portion of the patch in a display list for the tile. * e S. * * * . * *5 * **.*S * * * 0 * . * * S.
GB1223099.1A 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering Active GB2509113B (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
GB1223099.1A GB2509113B (en) 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering
GB1702949.7A GB2544679B (en) 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering
DE102013114176.5A DE102013114176A1 (en) 2012-12-20 2013-12-17 Tessellating surface data segments in tile-based rendering of computer graphics
US14/135,125 US9547934B2 (en) 2012-12-20 2013-12-19 Tessellating patches of surface data in tile based computer graphics rendering
CN201310713479.9A CN103886633B (en) 2012-12-20 2013-12-20 Computer graphical based on segment renders the dough sheet of middle subdivision face data
CN201710873834.7A CN107657655B (en) 2012-12-20 2013-12-20 Method and system for culling in a tile-based graphics system
US15/372,088 US9892547B2 (en) 2012-12-20 2016-12-07 Tessellating patches of surface data in tile based computer graphics rendering
US15/862,382 US11527040B2 (en) 2012-12-20 2018-01-04 Tessellating patches of surface data in tile based computer graphics rendering
US18/070,359 US20230088494A1 (en) 2012-12-20 2022-11-28 Tessellating patches of surface data in tile based computer graphics rendering

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1223099.1A GB2509113B (en) 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering

Publications (3)

Publication Number Publication Date
GB201223099D0 GB201223099D0 (en) 2013-02-06
GB2509113A true GB2509113A (en) 2014-06-25
GB2509113B GB2509113B (en) 2017-04-26

Family

ID=47682343

Family Applications (2)

Application Number Title Priority Date Filing Date
GB1702949.7A Active GB2544679B (en) 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering
GB1223099.1A Active GB2509113B (en) 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering

Family Applications Before (1)

Application Number Title Priority Date Filing Date
GB1702949.7A Active GB2544679B (en) 2012-12-20 2012-12-20 Tessellating patches of surface data in tile based computer graphics rendering

Country Status (4)

Country Link
US (4) US9547934B2 (en)
CN (2) CN107657655B (en)
DE (1) DE102013114176A1 (en)
GB (2) GB2544679B (en)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112013005255T5 (en) 2012-11-02 2015-09-24 Imagination Technologies Ltd. If necessary, geometry and acceleration structure generation
KR20160063081A (en) * 2014-11-26 2016-06-03 삼성전자주식회사 Method and apparutus for selective tesselation
EP3070677B1 (en) * 2015-03-20 2021-07-28 Samsung Electronics Co., Ltd. Method and apparatus for tile-based rendering
KR102381945B1 (en) 2015-11-18 2022-04-01 삼성전자주식회사 Graphic processing apparatus and method for performing graphics pipeline thereof
EP3249612B1 (en) * 2016-04-29 2023-02-08 Imagination Technologies Limited Generation of a control stream for a tile
US10032308B2 (en) * 2016-06-22 2018-07-24 Advanced Micro Devices, Inc. Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
US20180082465A1 (en) * 2016-09-16 2018-03-22 Prasoonkumar Surti Apparatus and method for optimized tile-based rendering
US10943389B2 (en) * 2016-12-09 2021-03-09 Advanced Micro Devices, Inc. Removing or identifying overlapping fragments after z-culling
US10692258B2 (en) * 2017-11-20 2020-06-23 Intel Corporation Minimum or maximum sample indexing in control surface
US10672182B2 (en) * 2018-04-19 2020-06-02 Microsoft Technology Licensing, Llc Compact visibility state for GPUs compatible with hardware instancing
CN112116519B (en) 2019-06-19 2022-12-27 畅想科技有限公司 Coarse depth testing in graphics processing systems
US11010862B1 (en) * 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors
CN111583378B (en) * 2020-06-11 2023-11-17 网易(杭州)网络有限公司 Virtual asset processing method and device, electronic equipment and storage medium
CN116188552B (en) * 2023-04-24 2023-08-11 摩尔线程智能科技(北京)有限责任公司 Region-based depth test method, device, equipment and storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US20120299910A1 (en) * 2011-05-25 2012-11-29 Via Technologies, Inc. Z-culling method, three-dimensional graphics processing method and apparatus threrof

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US299910A (en) * 1884-06-03 Machine foe cutting meat and vegetables
US5357600A (en) * 1992-10-15 1994-10-18 Sun Microsystems, Inc. Method and apparatus for the rendering of curved surfaces using a cone of normals
US5864342A (en) 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
US6246415B1 (en) 1998-04-30 2001-06-12 Silicon Graphics, Inc. Method and apparatus for culling polygons
US7245299B2 (en) * 2003-05-12 2007-07-17 Adrian Sfarti Bicubic surface real-time tesselation unit
US20020196252A1 (en) * 2001-06-20 2002-12-26 Min-Hao Liao Method and apparatus for rendering three-dimensional images with tile-based visibility preprocessing
GB2378108B (en) 2001-07-24 2005-08-17 Imagination Tech Ltd Three dimensional graphics system
US7301537B2 (en) * 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
US20050122338A1 (en) * 2003-12-05 2005-06-09 Michael Hong Apparatus and method for rendering graphics primitives using a multi-pass rendering approach
US7450120B1 (en) 2003-12-19 2008-11-11 Nvidia Corporation Apparatus, system, and method for Z-culling
US7154500B2 (en) * 2004-04-20 2006-12-26 The Chinese University Of Hong Kong Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer
US7167171B2 (en) * 2004-06-29 2007-01-23 Intel Corporation Methods and apparatuses for a polygon binning process for rendering
US7538765B2 (en) * 2004-08-10 2009-05-26 Ati International Srl Method and apparatus for generating hierarchical depth culling characteristics
US8089486B2 (en) 2005-03-21 2012-01-03 Qualcomm Incorporated Tiled prefetched and cached depth buffer
CN103310480B (en) * 2007-01-24 2016-12-28 英特尔公司 By the method and apparatus using replaceable rejecting program to improve graphics performance
US8184118B2 (en) * 2007-05-01 2012-05-22 Advanced Micro Devices, Inc. Depth operations
WO2009093956A1 (en) 2008-01-23 2009-07-30 Swiftfoot Graphics Ab Method, apparatus, and computer program product for improved graphics performance
GB0810311D0 (en) * 2008-06-05 2008-07-09 Advanced Risc Mach Ltd Graphics processing systems
GB2461900B (en) * 2008-07-16 2012-11-07 Advanced Risc Mach Ltd Monitoring graphics processing
US20100164954A1 (en) * 2008-12-31 2010-07-01 Sathe Rahul P Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation
US8384715B2 (en) * 2009-04-13 2013-02-26 Microsoft Corporation View-dependent rendering of parametric surfaces
GB201007348D0 (en) * 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system
GB201104066D0 (en) * 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
US10089774B2 (en) * 2011-11-16 2018-10-02 Qualcomm Incorporated Tessellation in tile-based rendering
US8982124B2 (en) * 2012-09-29 2015-03-17 Intel Corporation Load balancing and merging of tessellation thread workloads

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US20120299910A1 (en) * 2011-05-25 2012-11-29 Via Technologies, Inc. Z-culling method, three-dimensional graphics processing method and apparatus threrof

Also Published As

Publication number Publication date
DE102013114176A1 (en) 2014-06-26
CN107657655B (en) 2021-07-13
US20230088494A1 (en) 2023-03-23
CN107657655A (en) 2018-02-02
GB2544679B (en) 2017-08-16
US9892547B2 (en) 2018-02-13
US20180197325A1 (en) 2018-07-12
GB201223099D0 (en) 2013-02-06
CN103886633B (en) 2017-10-24
US9547934B2 (en) 2017-01-17
GB2544679A (en) 2017-05-24
GB2509113B (en) 2017-04-26
CN103886633A (en) 2014-06-25
GB201702949D0 (en) 2017-04-12
US20140176544A1 (en) 2014-06-26
US11527040B2 (en) 2022-12-13
US20170091986A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
US20230088494A1 (en) Tessellating patches of surface data in tile based computer graphics rendering
US11182952B2 (en) Hidden culling in tile-based computer generated images
US20230230323A1 (en) Tessellation of Patches of Surfaces in a Tile Based Rendering System
US20220164919A1 (en) Tile based computer graphics
US9530241B2 (en) Clipping of graphics primitives
EP1519319A2 (en) Method and apparatus for antialiased blending in image rendering
JP4977712B2 (en) Computer graphics processor and method for rendering stereoscopic images on a display screen
US10432914B2 (en) Graphics processing systems and graphics processors
TW201142743A (en) Image processing techniques
EP1519317A1 (en) Apparatus and method for antialiasing based on z buffer or normal vector information
KR20170025099A (en) Method and apparatus for rendering
Hernández et al. Simple dynamic lod for geometry images
US10089783B2 (en) Graphics processing