Abstract:
A three-dimensional computer graphics rendering system allows a tile-based rendering system to operate with a reduced amount of storage required for tiled screen space geometry by using an untransformed display list to represent the screen&#39;s geometry.

Description:
This application is a continuation of U.S. patent application Ser. No. 12/383,119, filed on Mar. 19, 2009, entitled “UNTRANSFORMED DISPLAY LISTS IN A TILE BASED RENDERING SYSTEM”, now U.S. Pat. No. 8,368,691, issued on Feb. 5, 2013, which claims priority from GB 0805146.8, filed on Mar. 19, 2008. 
    
    
     This invention relates to a three-dimensional computer graphics rendering system and in particular to methods and apparatus associated with rendering three-dimensional graphic images utilising an untransformed display list within a tile based rendering system. 
     BACKGROUND TO THE INVENTION 
     Tile based rendering systems are well known, these subdivide an image into a plurality of rectangular blocks or tiles in order to increase efficiency of the rasterisation process. 
       FIG. 1  illustrates a traditional the based rendering system. Tile based rendering systems operate in two phases, a geometry processing phase and a rasterisation phase. During the geometry processing phase a primitive/command fetch unit  100  retrieves command and primitive data from memory and passes this to a geometry fetch unit  105  which fetches the geometry data  110  from memory and passes it to a transform unit  115 . This transforms the primitive and command data into screen space and applies any lighting/attribute processing as required using well-known methods. The resulting data is passed to a culling unit  120  which culls any geometry that isn&#39;t visible using well known methods. The culling unit writes any remaining geometry data to the transformed parameter buffer  135  and also passes the position data of the remaining geometry to the tiling unit  125  which generates a set of screen space objects lists for each tile which are written to the tiled geometry lists  130 . Each object list contains references to the transformed primitives that exist wholly or partially in that tile. The lists exist for every tile on the screen, although some object lists may have no data in them. This process continues until all the geometry within the scene has been processed. 
     During the rasterisation phase the object lists are fetched by a tiled parameter fetch unit  140  which first fetches the object references and then the object data referenced and supplies them to a hidden surface removal unit (HSR)  145  which removes surfaces which will not contribute to the final scene (usually because they are obscured by another surface). The HSR unit processes each primitive in the tile and passes only data for visible primitives/pixels to a texturing and shading unit (TSU)  150 . The TSU takes the data from the HSR unit and uses it to fetch textures and apply shading to each pixel within a visible object using well-known techniques. The TSU then supplies the textured and shaded data to an alpha test/fogging/alpha blending unit  155 . This is able to apply degrees of transparency/opacity to the surfaces again using well-known techniques. Alpha blending is performed using an on chip tile buffer  160  thereby eliminating the requirement to access external memory for this operation. It should be noted that the TSU and alpha test/fogging/alpha blend units may be fully programmable in nature. 
     Once each tile has been completed, a pixel processing unit  165  performs any necessary backend processing such as packing and anti-alias filtering before writing the resulting data to a rendered scene buffer  170 , ready for display. 
     Typically modern computer graphics applications utilise a significant amount of geometry that remains static throughout a scene or across multiple scenes, this geometry data is stored in what is commonly known as static vertex buffers that typically reside in memory that is local to the graphics processing unit. Current tile based systems transform this data into screen space and store the resulting geometry within a parameter buffer/tiled screen spaced geometry list that can consume a considerable amount of additional storage and memory bandwidth. 
     SUMMARY OF THE INVENTION 
     Preferred embodiments of the present invention provide a method and apparatus that allow a the based rendering system to operate with a reduced amount of storage required for tiled screen space geometry. This is accomplished by the use of an untransformed display list to represent the scene&#39;s geometry. This removes the need for the transformed parameter buffer  135  in  FIG. 1  by utilising the fact that the incoming scene geometry is static and so it can be referenced in both the geometry processing and rasterisation phases. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Preferred embodiments of the invention will now be described in detail by way of example with reference to the accompanying drawings in which: 
         FIG. 1  illustrates a traditional tile based rendering system; 
         FIG. 2  illustrates a tile based rendering system using an untransformed display list; 
         FIG. 3  illustrates deferred lighting/attribute processing; 
         FIG. 4  illustrates the addition of a transformed data cache to the system; and 
         FIG. 5  illustrates a hybrid transformed/untransformed display list based tile based rendering system. 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
       FIG. 2  illustrates a tile based rendering system that has been modified to support an untransformed display list. During the geometry processing phase a primitive/command fetch unit  200  retrieves command and primitive data from memory and passes this to a position data fetch unit  205  which fetches a position part of static geometry data from memory  210  and passes it to transform  1  unit  215 . This transforms the primitive into screen space only i.e. it does not apply any lighting/attribute processing as would occur in the system of  FIG. 1 . The resulting screen space position data is passed to a culling unit  220  which culls any geometry in the same manner as the system of  FIG. 1 . Unlike the system of  FIG. 1  the culling unit does not write the remaining geometry data to a transformed parameter buffer, instead it only passes the position data of the remaining geometry to a tiling unit  225 . 
     In the system of  FIG. 1 , the tiling unit generates references to transformed geometry that has been stored in the transformed parameter buffer, in the new system the tiling unit generates references to the untransformed static geometry data which are written to the tiled geometry lists  230  as before. These references are in the form of pointers to the geometry data in the memory  210 . This process continues until all the geometry within the scene has been processed. 
     During the rasterisation phase object lists for each tile are fetched by a tiled parameter fetch unit  240  which supplies the static geometry references (pointers) from the total geometry lists to untransformed geometry fetch unit  245  which fetches the untransformed static geometry data from memory  210  and passes it to the transform  2  unit  250 . The transform  2  unit retransforms the retrieved data to screen space and applies any required lighting/attribute processing etc to the geometry. The transformed geometry is then passed to hidden surface removal unit (HSR)  255  which removes surfaces which will not contribute to the final scene as in the system of  FIG. 1 . The remaining stages  260  through to  280  all operate in the same manner as stages  150  through  170  (in  FIG. 1 ) as described above. [John: should  FIG. 2  also include a source of dynamic geometry?] 
     In a further optimisation it is possible to defer any lighting or attribute processing that is required after hidden surface removal has been performed. This means that this processing is only applied to that geometry which is visible within the final scene giving significant improvements in both throughput and power consumption.  FIG. 3  illustrates a modification to the system that implements deferred lighting/attribute processing. Units  300  and  305  operate as described for units  240  and  245  of  FIG. 2 , unlike unit  250  in  FIG. 2  the transform  2  unit  310  only transforms the position data before passing it onto the hidden surface removal unit  315 . The visible primitives emitted by the hidden surface removal unit are then passed to transform  3  unit  320  where any lighting/attribute processing is performed. The operation of units  325  to  350  is the same as units  145  to  170  in  FIG. 1 . 
     It should be noted that each of the three transformation units mentioned above could all be implemented in a single “universal” unit similar to that described in our British Patent Application GB-A-2430513. Although the above approaches eliminate the need for a transformed parameter buffer they have the disadvantage of requiring the position data to be transformed in both phases and for the transformation to be repeated for every tile that any piece of geometry overlaps.  FIG. 4  illustrates a modification to the rasterisation phase of the untransformed display list system in which a cache is added in order to minimise the number of times the data is retransformed in the rasterisation phase. It should be noted that although  FIG. 4  shows a modification with respect to a non deferred lighting/attribute processing system it is equally applicable to either. As in  FIG. 2  the tiled parameter fetch unit  400  fetches the tiled object list references generated in the geometry processing phase from memory. The references are passed to a cache control unit  405  which checks to see if there is an entry in the transformed data cache memory  410  that corresponds to the object reference, if there is the cache control unit reads the data from the cache and passes it to the hidden surface removal unit  425 . If there is no corresponding entry in the cache the cache control unit issues the reference to the untransformed geometry fetch unit  415  which fetch the data from memory and passes it to the transform  2  unit  420 . The transform  2  unit transforms and applies any lighting/attribute process required to the geometry data and then passes it back to the cache control unit. The cache control unit then adds it to the transformed data cache memory for future reference before passing it to the hidden surface removal unit. The operation of units  425  to  450  is the same as units  145  to  170  in  FIG. 1 . 
     In order to eliminate the additional geometry processing pass used in the above approach the result of the position transform can be stored in a parameter buffer for use in the second pass. Although this results in the need for, transformed parameter storage it may be consider a useful trade off compared against transforming the position data multiple times. It should also be noted that there are cases were an application will update the vertex data during a scene, this type of vertex data is often referred to as dynamic, in these circumstances the data must be transformed and copied to a parameter buffer as per a conventional tile based rendering device. 
       FIG. 5  illustrates a hybrid system that allows the use of both untransformed and transformed display lists. During the geometry processing phase a primitive/command fetch unit  500  retrieves command and primitive data from memory and passes this to the geometry fetch unit  505  which fetches both the dynamic geometry data  507  and static geometry data  510  from memory and passes it to the transform  1  unit  515 . 
     For dynamic geometry the transform  1  unit transforms the position and applies any required lighting/attribute processing as per a traditional tile based rendering system, for static geometry only the position is transformed as previously described. The resulting data is passed to a culling unit  520  which culls any geometry that isn&#39;t visible using well known methods. The culling unit writes any remaining dynamic geometry and static position data to the transformed parameter buffer  535  and also passes the position data of the remaining geometry to the tiling unit  525  which generates a set of screen objects lists for each tile which are written to the tiled geometry lists  530 . It should be noted that the tiled geometry lists indicate which geometry is dynamic and which is static. As in  FIG. 2  the tiled parameter fetch unit  540  fetches the tiled object list references generated in the geometry processing phase from memory. The references are passed to the cache control unit  545  which checks to see if there is an entry in the transformed data cache memory  550  that corresponds to the object reference, if there is the cache control unit reads the data from the cache and passes it to the hidden surface removal unit  565 . If there is no corresponding entry in the cache the cache control unit issues the reference to either the transformed parameter fetch unit  547  or the untransformed geometry fetch unit  555  based on the type indicated in the tiled reference lists. Transformed geometry is fetched by the transformed parameter fetch unit and passed back to the cache control unit and untransformed geometry is fetched by the untransformed geometry fetch unit and processed by transform unit  2   560  before being passed back to the cache control unit. Both geometry types are then written to the cache by the control unit before being passed to the hidden surface removal unit. All subsequent units  565  through to  590  operate as previously described for units  145  through  170  in  FIG. 1 .