Accessing primitive data using tessellated primitive ID
US-11308691-B2 · Apr 19, 2022 · US
US12039667B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12039667-B2 |
| Application number | US-201916376511-A |
| Country | US |
| Kind code | B2 |
| Filing date | Apr 5, 2019 |
| Priority date | Apr 5, 2018 |
| Publication date | Jul 16, 2024 |
| Grant date | Jul 16, 2024 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A method of generating identifiers (IDs) for primitives and optionally vertices during tessellation. The IDs include a binary sequence of bits that represents the sub-division steps taken during the tessellation process and so encodes the way in which tessellation has been performed. Such an ID may subsequently be used to generate a random primitive or vertex and hence recalculate vertex data for that primitive or vertex.
Opening claim text (preview).
What is claimed is: 1. A tessellation unit configured to perform tessellation in a computer graphics system, the tessellation unit comprising hardware logic arranged to: sub-divide an initial patch into a plurality of primitives using a plurality of sub-division steps; and generate a primitive ID for each primitive, wherein the primitive ID encodes data about how the primitive was generated by the plurality of sub-division steps; wherein the data about how the primitive was generated by sub-dividing the initial patch comprises a sequence of bits describing the plurality of sub-division steps taken to generate the primitive during tessellation; wherein each bit in the sequence of bits indicates which branch was taken at a respective sub-division step to generate the primitive during tessellation, and wherein each of the plurality of sub-division steps corresponds to a respective, single bit in the sequence of bits. 2. The tessellation unit according to claim 1 , wherein the sequence of bits that specifies a recursive sequence taken during the tessellation process. 3. The tessellation unit according to claim 2 , wherein the ID of a patch further comprises a variable length tail portion and wherein the ID of a patch comprises a fixed number of bits. 4. The tessellation unit according to claim 1 , wherein the hardware logic arranged to sub-divide an initial patch into a plurality of primitives using a plurality of sub-division steps comprises hardware logic arranged to: analyse an initial patch to determine whether to sub-divide the patch; in response to determining that the patch is not to be sub-divided, output the patch as a triangle primitive; in response to determining that the patch is to be sub-divided, divide the initial patch into two or more sub-patches; select each sub-patch formed by sub-division of the initial patch in turn and repeat the operations with the selected sub-patch in place of the initial patch; and wherein the hardware logic arranged to generate an ID for each primitive comprises hardware logic arranged: in response to dividing the initial patch into two or more sub-patches, to assign the sub-patches an ID that matches an ID of the patch that has been sub-divided; and in response to selecting a patch formed by sub-division of the initial patch, to update IDs of each patch formed by sub-division of the initial patch dependent upon the selection. 5. The tessellation unit according to claim 4 , wherein the initial patch is formed by sub-division of a triangle, quad or polygonal domain and the ID of a patch further comprises a header portion comprising one or more bits indicating which of a plurality of initial patches formed from the triangle or quad domain the primitive is in. 6. The tessellation unit according to claim 4 , wherein the hardware logic arranged to update IDs of each patch formed by sub-division of the initial patch dependent upon the selection comprises hardware logic arranged, for each ID, to: add one or more new bits to the sequence of bits that specifies a recursive sequence taken during the tessellation process, a value of the new bits being dependent upon the selection. 7. The tessellation unit according to claim 4 , wherein the initial patch is a triangle patch and the hardware logic arranged to select each sub-patch formed by sub-division of the initial patch in turn and repeating the operations with the selected sub-patch in place of the initial patch comprises hardware logic arranged to: select each of the sub-patches formed by sub-division of the initial patch in turn based on values of one or more flags and repeat the operations with the selected sub-patch in place of the initial patch; and wherein the hardware logic arranged to repeat the operations with the selected sub-patch in place of the initial patch comprises hardware logic arranged to: analyse the selected sub-patch to determine whether to further sub-divide the selected sub-patch; in response to determining that the selected sub-patch is not to be sub-divided, output the selected sub-patch as a triangle primitive; in response to determining that the selected sub-patch is to be further sub-divided, divide the selected sub-patch into two or more sub-patches; and select each sub-patch formed by sub-division of the selected sub-patch in turn based on the values of the one or more flags and repeat the operations with the selected sub-patch. 8. The tessellation unit according to claim 7 , wherein sub-division forms two patches, a left patch and a right patch and the hardware logic arranged to select each of the left and right patches formed by sub-division of the initial patch in turn based on values of one or more flags comprises hardware logic arranged to: select each of the left and right patches formed by sub-division of the initial patch in turn based on a value of an ordering flag. 9. The tessellation unit according to claim 8 , further comprising hardware logic arranged to: invert the value of the ordering flag once for each increase or decrease in a level of sub-division. 10. A tessellation unit configured to perform tessellation in a computer graphics system, the tessellation unit comprising hardware logic arranged to: receive, in a tessellation unit, an ID of a previously tessellated primitive and a surface patch reference; access data from the surface patch associated with the primitive, the data comprising tessellation factors and topology data; select an initial patch based on the ID of the previously tessellated primitive, and at least partially tessellate the initial patch with one or more sub-division stages, wherein at each stage of sub-division, it is determined whether to perform sub-division and which of any newly formed sub-patches to further sub-divide based on a respective bit in a sequence of one or more bits in the ID of the previously tessellated primitive, wherein each bit in the sequence of bits corresponds to a respective one of the one or more sub-division stages. 11. The tessellation unit according to claim 10 , wherein the tessellation unit further comprises hardware logic arranged to: select an input patch based on the data from the surface patch associated with the primitive and subdividing the input patch into one or more initial patches. 12. The tessellation unit according to claim 11 , wherein the ID of the previously tessellated primitive or of a patch comprises a sequence of bits that specifies a recursive sequence taken during the tessellation process. 13. The tessellation unit according to claim 11 , wherein each bit in the sequence of bits indicates whether to process a left sub-patch or a right sub-patch formed by a sub-division operation in the tessellation process. 14. The tessellation unit according to claim 10 , wherein at least partially tessellating the initial patch generated from subdivision of an input patch results in re-generating the previously tessellated primitive. 15. The tessellation unit according to claim 10 , further comprising hardware logic arranged to: output domain vertices for the previously tessellated primitive. 16. A tessellation unit configured to perform tessellation in a computer graphics system, the tessellation unit comprising hardware logic arranged to: sub-divide an initial patch into a plurality of primitives using a plurality of sub-division steps; generate a plurality of primitive IDs, each for a respective one of the plurality of primitives, wherein each of the plurality of primitive IDs encodes data about how the primitive was generated by the plurality of sub-division
involving image processing hardware · CPC title
Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes · CPC title
Tree description, e.g. octree, quadtree · CPC title
General purpose rendering architectures · CPC title
Processor architectures; Processor configuration, e.g. pipelining · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.