Start node determination for tree traversal in ray tracing applications
US-2015302629-A1 · Oct 22, 2015 · US
US12462464B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-12462464-B2 |
| Application number | US-202217961359-A |
| Country | US |
| Kind code | B2 |
| Filing date | Oct 6, 2022 |
| Priority date | May 29, 2014 |
| Publication date | Nov 4, 2025 |
| Grant date | Nov 4, 2025 |
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.
An application sends primitives to a graphics processing system so that an image of a 3D scene can be rendered. The primitives are placed into primitive blocks for storage and retrieval from a parameter memory. Rather than simply placing the first primitives into a primitive block until the primitive block is full and then placing further primitives into the next primitive block, multiple primitive blocks can be “open” such that a primitive block allocation module can allocate primitives to one of the open primitive blocks to thereby sort the primitives into primitive blocks according to their spatial positions. By grouping primitives together into primitive blocks in accordance with their spatial positions, the performance of a rasterization module can be improved. For example, in a tile-based rendering system this may mean that fewer primitive blocks need to be fetched by a hidden surface removal module in order to process a tile.
Opening claim text (preview).
What is claimed is: 1 . A method of processing primitives for rendering an image of a three dimensional scene in a computer graphics processing system in which primitive data is stored in blocks of a data store by primitive allocation logic of the computer graphics processing system, wherein the primitives are defined by vertices, the method comprising: for each of a plurality of received primitives: (i) comparing an indication of a spatial position in the scene of the received primitive with at least one indication of a spatial position in the scene of at least one block of the data store, wherein the at least one block of the data store comprises vertex data for vertices of previously received primitives, and (ii) storing primitive data for the received primitive in a block of the data store based on a result of the comparison, such that the received primitive is stored in a block in accordance with its spatial position, wherein the primitive data for the received primitive comprises vertex data for vertices of the received primitive; and processing the primitive data stored in the blocks of the data store in the computer graphics processing system to render the image. 2 . The method of claim 1 , wherein said processing primitive data comprises outputting the primitive data stored in the blocks of the data store by the primitive allocation logic. 3 . The method of claim 2 , wherein said processing primitive data further comprises: receiving the outputted primitive data at a tiling module of the computer graphics processing system; and using the received primitive data at the tiling module to determine which primitives are present within each of a plurality of tiles. 4 . The method of claim 1 , wherein for each of the received primitives, said comparing comprises comparing an indication of a spatial position in the scene of the received primitive with respective indications of spatial positions in the scene of at least two blocks of the data store. 5 . The method of claim 1 , wherein in response to the result of the comparison indicating that the spatial position in the scene of the received primitive matches the spatial position in the scene of a single one of the blocks of the data store, the received primitive is allocated to said one of the blocks. 6 . The method of claim 1 , further comprising, in response to the result of the comparison indicating that the spatial position in the scene of the received primitive matches the spatial position in the scene of a plurality of the blocks of the data store, merging said plurality of blocks to form a merged block, wherein the received primitive is allocated to the merged block. 7 . The method of claim 1 , further comprising, in response to the result of the comparison indicating that the spatial position in the scene of the received primitive does not match the spatial position in the scene of any of the blocks of the data store, creating a new block to be included in said data store, wherein the received primitive is allocated to the new block. 8 . The method of claim 7 , further comprising: determining that the data store does not have space to store the new block; and in response to determining that the data store does not have space to store the new block, outputting one of the blocks from the data store to provide space for the new block. 9 . The method of claim 8 , further comprising selecting a block to be outputted from the data store in accordance with an outputting scheme, wherein the outputting scheme comprises one or more of: (i) a round robin scheme; (ii) an output the biggest scheme in which a block with the most primitives is selected to be outputted; (iii) an output the smallest scheme in which a block with the fewest primitives is selected to be outputted; (iv) an output the oldest scheme in which a block which has been in the data store for the longest amount of time is selected to be outputted; (v) a merge and output smallest and biggest scheme in which a block with the most primitives and a block with the fewest primitives are merged and the resulting merged block is then selected to be outputted; (vi) a merge threshold scheme in which any blocks with fewer than a threshold number of primitives are merged and the resulting merged block is then selected to be outputted; and (vii) a merge smallest scheme in which two blocks with the fewest primitives are merged and the resulting merged block is kept in the data store, wherein one block from the data store is selected to be outputted if merging is not possible. 10 . The method of claim 1 , wherein each of the blocks of the data store includes a header which includes state information indicating how to render the primitives in that block. 11 . A computer graphics processing system configured to process primitives to render an image of a three dimensional scene, wherein the primitives are defined by vertices, the computer graphics processing system comprising: a data store configured to store primitive data in blocks of the data store; and primitive allocation logic configured to, for each of a plurality of received primitives: (i) compare an indication of a spatial position in the scene of the received primitive with at least one indication of a spatial position in the scene of at least one block of the data store, wherein the at least one block of the data store comprises vertex data for vertices of previously received primitives, and (ii) store primitive data for the received primitive in a block of the data store based on a result of the comparison, such that the received primitive is stored in a block in accordance with its spatial position, wherein the primitive data for the received primitive comprises vertex data for vertices of the received primitive. 12 . The computer graphics processing system of claim 11 , further comprising a tiling module configured to determine which primitives are present within each of a plurality of tiles. 13 . The computer graphics processing system of claim 12 , wherein the primitive allocation logic is configured to: allocate primitives to blocks of the data store prior to tiling; and provide blocks to the tiling module. 14 . The computer graphics processing system of claim 11 , wherein the indication of a spatial position in the scene of the received primitive comprises a vertex of the received primitive, and an indication of a spatial position of a block of the data store comprises a vertex of a primitive stored in that block, wherein the primitive allocation logic is configured to compare vertices of the received primitive and vertices of blocks of the data store to determine whether the received primitive has one or more shared vertices with a block of the data store. 15 . The computer graphics processing system of claim 11 , wherein the indication of a spatial position in the scene of the received primitive comprises a bounding box of the received primitive, and an indication of a spatial position in the scene of a block of the data store comprises a bounding box of that block, wherein the primitive allocation logic is configured to compare the bounding box of the received primitive and the bounding boxes of blocks of the data store to determine whether the bounding box of the received primitive overlaps with, or is within a minimum distance from overlapping with, the bounding box of a block of the data store. 16 . The computer graphics processing system of claim 11 , wherein the primitive allocation logic is further configured such that, responsive to the received primitive being stored in a
Texturing; Colouring; Generation of textures or colours (retouching, inpainting or scratch removal G06T5/77) · CPC title
Curved planar reformation of 3D line structures · CPC title
Scene description · CPC title
Bounding box · CPC title
Color image · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.