Patent Publication Number: US-9430863-B1

Title: System, method, and computer program product for constructing a hierarchical acceleration data structure that supports ray tracing of motion blur

Description:
FIELD OF THE INVENTION 
     The present invention relates to rendering images, and more particularly to performing ray tracing. 
     BACKGROUND 
     Traditionally, ray tracing has been used to enhance a visual realism of generated images. For example, ray tracing may be used to generate a displayed image by tracing paths of light through the pixels of the image plane. However, current techniques for performing ray tracing have been associated with various limitations. 
     For example, current methods for performing ray tracing may inadequately address the simulation of motion blur in generated images. More specifically, hierarchies may be used that exhibit large overlap between bounding volumes, which may result in inefficient traversals while performing ray tracing. 
     There is thus a need for addressing these and/or other issues associated with the prior art. 
     SUMMARY 
     A system, method, and computer program product are provided for constructing a hierarchical acceleration data structure that supports ray tracing of motion blur. In use, scene description data associated with an image to be generated is received. Additionally, a hierarchical acceleration data structure for performing ray tracing on the scene description data is constructed, where the hierarchical acceleration data structure supports ray tracing of motion blur. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  shows a method for constructing a hierarchical acceleration data structure that supports ray tracing of motion blur, in accordance with one embodiment. 
         FIG. 2  shows a transformation of a clipped primitive during construction of an MSBVH, in accordance with another embodiment. 
         FIG. 3  shows results of approximating a complicated patch by more than one bounding box, in accordance with yet another embodiment. 
         FIG. 4  illustrates an exemplary system in which the various architecture and/or functionality of the various previous embodiments may be implemented. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  shows a method  100  for constructing a hierarchical acceleration data structure that supports ray tracing of motion blur, in accordance with one embodiment. As shown in operation  102 , scene description data associated with an image to be generated is received. In one embodiment, the scene description data may include any data that represents one or more elements of the image. For example, the scene description data may include a description of a scene to be displayed, geometry associated with the scene, one or more objects within the scene, a lighting of the scene, etc. In another embodiment, the scene description data may be received from a data store such as a database, server, hard drive, etc. 
     Additionally, as shown in operation  104 , a hierarchical acceleration data structure for performing ray tracing on the scene description data is constructed, where the hierarchical acceleration data structure supports ray tracing of motion blur. In one embodiment, the hierarchical acceleration data structure may include a bounding volume hierarchy (BVH). For example, the hierarchical acceleration data structure may partition a list of objects within the scene description data. In another embodiment, motion blur may include blurring of a viewed image due to motion (e.g., motion of an object while a shutter of a camera is open, etc.). 
     Further, in one embodiment, the hierarchical acceleration data structure may include a splitting bounding volume hierarchy (SBVH). For example, the hierarchical acceleration data structure may perform spatial partitioning to a BVH. In another embodiment, the hierarchical acceleration data structure may include a motion splitting bounding volume hierarchy (MSBVH). For example, the hierarchical acceleration data structure may interpolate node bounding boxes and may also perform spatial partitioning. 
     Further still, in one embodiment, the hierarchical acceleration data structure may include an SBVH constructed for a midpoint of a determined shutter interval. For example, a shutter interval (e.g., an interval associated with a simulated opening and closing of a camera shutter, etc.) may be associated with the scene description data in order to support a photorealistic simulation of the ray tracing performed on the scene description data. In another example, the shutter may determined to be open for one unit of time, and may therefore have an interval of [0,1]. In yet another example, if the determined shutter interval is [0,1], the midpoint of the shutter interval may be 0.5. 
     Also, in one embodiment, the hierarchical acceleration data structure may include a hierarchy of nodes. For example, the hierarchical acceleration data structure may include a tree structure containing a plurality of nodes. In another embodiment, n+1 bounding boxes may be computed for each node in the hierarchy of nodes. For example, each node in the hierarchy of nodes may store n+1 bounding boxes, where each bounding box may correspond to a point in time of the determined shutter interval. 
     In addition, in one embodiment, computing the n+1 bounding boxes for each node of the hierarchical acceleration data structure may include computing bounding boxes for a first node corresponding to the midpoint of the determined shutter interval. In another embodiment, computing the n+1 bounding boxes for each node of the hierarchical acceleration data structure may include determining bounding boxes of leaf nodes of the first node. For example, a clipped primitive may be determined at the midpoint of the determined shutter interval by intersecting each primitive referenced in a leaf node with a bounding box of the leaf node. In another example, the clipped primitive may then be transformed for the bounding boxes corresponding to the beginning and end points of the shutter interval. In another embodiment, the transformation may be propagated up the hierarchical acceleration data structure. 
     In this way, the hierarchical acceleration data structure may efficiently support adjusting to a time within the determined shutter interval while performing accelerated ray tracing. Additionally, ray traced motion blur may be computed faster and more efficiently. 
     Further, in one embodiment, one or more instances may be used in constructing the hierarchical acceleration data structure. For example, the hierarchical data structure may include a directed acyclic graph, and one or more parts of the hierarchy of the acceleration data structure may be referenced multiple times. In another embodiment, construction of the hierarchical acceleration data structure may be sped up by pre-sorting a primitive index array of the data structure. For example, the primitive index array may be pre-sorted according to primitive centroids. 
     Further still, in one embodiment, a traversal order of the hierarchical acceleration data structure may be determined according to a parametric distance of a ray-bounding box intersection associated with the hierarchical acceleration data structure. In another embodiment, multiple motion segments may be used for ray tracing of a single frame. For example, multiple motion segments may be used in cases of non-linear motion. 
     More illustrative information will now be set forth regarding various optional architectures and features with which the foregoing framework may or may not be implemented, per the desires of the user. It should be strongly noted that the following information is set forth for illustrative purposes and should not be construed as limiting in any manner. Any of the following features may be optionally incorporated with or without the exclusion of other features described. 
       FIG. 2  shows the transformation  200  of a clipped primitive during construction of an MSBVH, in accordance with another embodiment. As an option, the transformation  200  may be carried out in the context of the functionality of  FIG. 1 . Of course, however, the transformation  200  may be implemented in any desired environment. It should also be noted that the aforementioned definitions may apply during the present description. 
     As shown, a triangle primitive  202   a - c  is shown in linear motion during a shutter interval [0,1]. Triangle primitive  202   a  is shown at time t 0 =0, triangle primitive  202   b  is shown at time t=0.5, and triangle  202   c  is shown at time t 1 =1. Additionally, the linear motion of the triangle primitive  202   a - c  is shown by motion segments  204 . Further, at time t=0.5, a bounding box  206   b  of a leaf node of a hierarchical data structure is shown together with triangle primitive  202   b  as it results from a SBVH hierarchy construction algorithm for t=0.5. 
     In one embodiment, the construction of the topology of the MSBVH may be the same as the construction of a topology of an SBVH built for t=0.5 in a camera shutter interval [0, 1]. In another embodiment, in order to enable temporal interpolation, each hierarchy node may store n+1 volumes. For example, each volume may correspond to a single time instant t i  for i=0, n. In another embodiment, for the example of linear motion from t 0 =0 to t 1 =1, two bounding boxes may need to be stored in each node, which may bound the respective endpoints of the motion segments. 
     Additionally, in one embodiment, BVHs may use axis-aligned bounding boxes as bounding volumes. In another embodiment, BVHs may be well suited for rendering scenes with motion blur, since during traversal the bounding boxes of the hierarchy may be interpolated according to the ray time. This may result in much tighter bounds than intersecting with the bounding box of a moving primitive containing the complete motion path. 
     In another embodiment, a bounding volume hierarchy may partition the list of objects, while a kd-tree may partition space. In yet another embodiment, the SBVH may add spatial partitioning to BVHs. See, for example, “Spatial splits in bounding volume hierarchies,” (Stich et al., In Proceedings of the Conference on High Performance Graphics 2009, ACM, New York, N.Y., USA, HPG &#39;09, 7-13), which is hereby incorporated by reference in its entirety, and which describes the splitting bounding volume hierarchy (SBVH). In still another embodiment, these spatial splits may significantly reduce the overlap of node bounding boxes for many scenes, which may reliably increase rendering performance. 
     Further still, due to spatial splits, parts of the triangle primitive  202   b  have been clipped by the bounding box  206   b , which results in the clipped primitive  208   b  (e.g., the polygon region within the bounding box  206   b ). Also, the clipped primitive  208   b  is transformed to bounding box  206   a  at time t 0 =0 and is bounded to extend the bounding box  206   a  to form clipped primitive  208   a . Additionally, the clipped primitive  208   b  is transformed to bounding box  206   c  at time t 1 =1 and is bounded to extend the bounding box  206   c  to form clipped primitive  208   c . In one embodiment, the bounding boxes  206   a  and  206   c  may be interpolated during traversal. 
     Additionally, in one embodiment, the construction of the MSBVH may include the computation of n+1 bounding boxes of each node. For example, given the SBVH bounding boxes, which may correspond to time t=0.5, the bounding boxes of the leaf nodes may be determined, where each primitive  202   b  referenced in an SBVH leaf may be intersected with the leaf&#39;s bounding box  206   b . This may result in the clipped primitive  208   b , which may then be transformed for each t i . 
     In another embodiment, the bounding box B i  of all of the leaf&#39;s transformed clipped primitives may constitute the MSBVH leaf bounding box at time t i . In still another embodiment, the bounds may be propagated up the hierarchy. In this way, MSBVH may support the efficient ray tracing of motion blur by interpolating node bounding boxes, while at the same time reducing node overlap using spatial splits. 
     Further, in one embodiment, besides linear interpolation, the construction may allow the use of any convex combination to find the bounding box to be intersected with a ray at time t. Table 1 illustrates a exemplary bounding box B(t). Of course, it should be noted that the bounding box shown in Table 1 is set forth for illustrative purposes only, and thus should not be construed as limiting in any manner. In another embodiment, the operations may be performed componentwise and the weights 0≦w i ≦1 may sum up to one. 
     
       
         
           
               
               
               
               
             
               
                 TABLE 1 
               
               
                   
               
             
            
               
                   
                   
                 B (t) = Σ i=0   n  w i (t)B i   
                   
               
               
                   
               
            
           
         
       
     
     Further still, in one embodiment, primitives may be clipped and the results may be transformed in order to determine the leaf bounding boxes of the MSBVH. For example, if the primitives include triangles, the triangles may be clipped against the clipping box using a Sutherland-Hodgman algorithm. See, for example, “Reentrant polygon clipping,” (Sutherland et al., Commun. ACM 17 (January), 32-42), which is hereby incorporated by reference in its entirety, and which describes the Sutherland-Hodgman algorithm. 
     In another embodiment, for the vertices of the resulting polygon, the barycentric coordinates (α, β, γ) may be computed with respect to their unclipped triangle (a, b, c). These may be found by repeatedly solving a 2×2 linear system for each vertex p of the clipped triangle polygon. Table 2 illustrates an exemplary linear system. Of course, it should be noted that the linear system shown in Table 2 is set forth for illustrative purposes only, and thus should not be construed as limiting in any manner. 
     
       
         
           
               
               
               
               
             
               
                   
                 TABLE 2 
               
               
                   
                   
               
             
            
               
                   
                   
                 α · a + β · b + γ · c = p 
                   
               
               
                   
                   
                 or equivalently, since α = 1 − β − γ, 
                   
               
               
                   
                   
                 a + β · (c − a) + γ · (b − a) = p 
               
               
                   
                   
               
            
           
         
       
     
     Further, in one embodiment, the exemplary linear system may include an overconstrained 3×3 linear system that may be reduced to a 2×2 system matrix. See, for example, “Physically Based Rendering: From Theory to Implementation, 2nd edition,” (Pharr et al., Morgan Kaufmann Publishers Inc., San Francisco, Calif., USA), which is hereby incorporated by reference in its entirety, and which describes techniques for reducing a linear system. 
     Further still, in one embodiment, the three triangle vertices may be transformed according to time t i . Additionally, the barycentric coordinates may be used to compute the transformed polygon vertices, which may be used to extend the axis-aligned leaf bounding box for time t i . In another embodiment, after extending all n+1 bounding boxes, the polygon data may be discarded. This procedure may tightly bound the transformed area of the clipped and transformed triangle. 
     In another embodiment, with respect to axis-aligned bounding boxes, the bounding box of the primitive intersected with the clipping box may be transformed. The resulting bounding boxes may not be as tight compared to clipping the primitive. Table 3 illustrates an exemplary interpolated clipped bounding box at t i . Of course, it should be noted that the interpolated clipped bounding box shown in Table 3 is set forth for illustrative purposes only, and thus should not be construed as limiting in any manner. In yet another embodiment, all vector operations may be performed elementwise. 
     
       
         
           
               
             
               
                 TABLE 3 
               
               
                   
               
               
                 Given the primitive bounding box [b min , b max ] at t = 0.5, its trans- 
               
               
                 formed counterpart [f min , f max ] at t i , and the bounding box of the 
               
               
                 primitive intersected with the clipping box [c min , c max ], 
               
               
                   
               
             
            
               
                 
                   
                     
                       
                         [ 
                         
                           
                             
                               f 
                               min 
                             
                             + 
                             
                               
                                 
                                   
                                     c 
                                     min 
                                   
                                   - 
                                   
                                     b 
                                     min 
                                   
                                 
                                 
                                   
                                     b 
                                     max 
                                   
                                   - 
                                   
                                     b 
                                     min 
                                   
                                 
                               
                               · 
                               
                                 ( 
                                 
                                   
                                     f 
                                     max 
                                   
                                   - 
                                   
                                     f 
                                     min 
                                   
                                 
                                 ) 
                               
                             
                           
                           , 
                           
                             
                               f 
                               min 
                             
                             + 
                             
                               
                                 
                                   
                                     c 
                                     max 
                                   
                                   - 
                                   
                                     b 
                                     min 
                                   
                                 
                                 
                                   
                                     b 
                                     max 
                                   
                                   - 
                                   
                                     b 
                                     min 
                                   
                                 
                               
                               · 
                               
                                 ( 
                                 
                                   
                                     f 
                                     max 
                                   
                                   - 
                                   
                                     f 
                                     
                                       m 
                                       ⁢ 
                                       
                                           
                                       
                                       ⁢ 
                                       i 
                                       ⁢ 
                                       
                                           
                                       
                                       ⁢ 
                                       n 
                                     
                                   
                                 
                                 ) 
                               
                             
                           
                         
                         ] 
                       
                     
                   
                 
               
               
                   
               
            
           
         
       
     
     Additionally, in one embodiment, with respect to complex shapes, resorting to using only bounding boxes may not be efficient for parametric surfaces and multi-resolution surfaces (e.g., displacement mapped subdivision surfaces, etc.). In these cases, the elements resulting from parametric or regular tessellation may be bounded.  FIG. 3  shows results  300  of approximating a complicated patch by more than one bounding box, in accordance with one embodiment. In this way, parts of the patch that belong to a left and right child may be conservatively determined as a consequence of a spatial split. 
     Further, see, for example, “Two-level ray tracing with reordering for highly complex scenes,” (Hanika et al., Proceedings of Graphics Interface 2010, Canadian Information Processing Society, Toronto, Ont., Canada, Canada, GI &#39;10, 145-152), and “Efficient bounding of displaced Bézier patches,” (Munkberg et al., Proceedings of the Conference on High Performance Graphics, Eurographics Association, Aire-la-Ville, Switzerland, Switzerland, HPG &#39;10, 153-162), which are hereby incorporated by reference in their entirety, and which describe techniques for bounding elements resulting from parametric or regular tesselation. 
     Further still, in one embodiment, the resulting bounding boxes may be handled as described hereinabove. In another embodiment, the bounding box of a node may be determined by the bounds of the clipped boxes of all elements in that node. Alternatively, it may be possible to avoid clipping the elements&#39; bounding boxes. However, this may not result in an exact spatial split and may lead to larger bounding boxes. In this way, the bounding boxes obtained with refinement may be much tighter than without and may enable a more precise approximation of the SAH. 
     Also, in one embodiment, instances may reduce scene complexity and hierarchy construction times. For example, instead of a tree, a directed acyclic graph may be used, where parts of the hierarchy may be referenced multiple times. In another example, such a reference may contain a transformation matrix A(t) that may depend on the time t and may be the frame of the referenced geometry. In yet another example, when a ray is intersected with such a node, it may be transformed to the frame of the instance by applying the inverse transformation matrix. 
     In another embodiment, in the context of animation, an important question may be how to find a tight bounding box of an animated instance during hierarchy construction. See, for example, “Physically Based Rendering: From Theory to Implementation, 2nd edition,” (Pharr et al., Morgan Kaufmann Publishers Inc., San Francisco, Calif., USA), incorporated by reference hereinabove in its entirety, which describes techniques for finding a bounding box. 
     In another example, A(t) may be sampled at discrete times t i  to determine a bounding box, but temporally continuous mapping A −1 (t) may be applied to transform the ray. In another embodiment, an approach may determine conservative bounding boxes for hierarchy construction. For example, in order to enable interpolation, the n+1 bounding boxes of an MSBVH node may be determined by bounding the instance using the frame A i :=A(t i ). In another example, tighter bounding boxes may be achieved by transforming the instance geometry, while transforming the bounding box of the instance is faster, but not as tight in general. 
     Additionally, in another example, the resulting instance bounding boxes may be processed as described hereinabove. In one embodiment, the primitives of individual instance hierarchies may still be clipped and transformed as described hereinabove. In another embodiment, conservative ray intersection may require approximation of the transformation. For example, during hierarchy traversal, the bounding boxes may be interpolated in exactly the same way as described in the algorithm hereinabove. When reaching the leaf that holds the instance, the matrices may be interpolated analogously to the bounding boxes. 
     Table 4 illustrates an exemplary interpolation of the matrices. Of course, it should be noted that the interpolation shown in Table 4 is set forth for illustrative purposes only, and thus should not be construed as limiting in any manner. 
     
       
         
           
               
               
               
             
               
                 TABLE 4 
               
               
                   
               
             
            
               
                   
                 A′(t) = Σ i=0   n  w i (t)A i . 
                   
               
               
                   
               
            
           
         
       
     
     Further, in one embodiment, the ray may be transformed using the inverse of the interpolated transformation matrix before traversing the instance-level MSBVH. In another embodiment, individual factored matrices resulting from a matrix decomposition are not interpolated into scale, rotation, and translation components. Instead, the individual matrix elements may be interpolated, which may result in splines that may match the interpolation of the instance bounding boxes. This may guarantee that no geometry of the instance may be missed. 
     Table 5 illustrates an exemplary linear interpolation with equidistant times t i . Of course, it should be noted that the interpolation shown in Table 5 is set forth for illustrative purposes only, and thus should not be construed as limiting in any manner. In one embodiment, for arbitrary t i , a binary search may be used to locate the corresponding motion segment. 
     
       
         
           
               
               
               
             
               
                 TABLE 5 
               
               
                   
               
             
            
               
                   
                 For the example of linear interpolation with equidistant times t i  := 
                   
               
               
                   
                  1/n, first the fraction λ = n · t - i inside the motion segment i = 
                   
               
               
                   
                 └n · t┘ is determined. Then the ray is transformed using the inverse 
                   
               
               
                   
                 of A′(λ) := (1 − λ) · A i  + λ · A i+1 . 
               
               
                   
               
            
           
         
       
     
     Further still, in one embodiment, mail-boxing may be applied in order to avoid intersecting a ray more than once with the same instance. See, for example, “A fast voxel traversal algorithm for ray tracing,” (Amanatides et al., In Eurographics 87, 3-10), incorporated by reference in its entirety, which describes techniques for applying mail-boxing. 
     In another embodiment, it may be possible to queue a fixed number of instance intersections along the ray. See, for example, “Two-level ray tracing with reordering for highly complex scenes,” (Hanika et al., In Proceedings of Graphics Interface 2010, Canadian Information Processing Society, Toronto, Ont., Canada, Canada, GI &#39;10, 145-152), incorporated by reference hereinabove in its entirety, which describes techniques for queuing a fixed number of instance intersections along a ray. In yet another embodiment, this queue then may be sorted to remove duplicates before performing further intersections. 
     Also, in one embodiment, in the above context the mail-boxing maybe accounted for when evaluating the SAH. See, for example, “Corrections to the surface area metric with respect to mail-boxing,” (Hunt, In Proceedings of the IEEE Symposium on Interactive Ray Tracing 2008, 77-80), incorporated by reference in its entirety, which describes techniques for accounting for mail-boxing when evaluating an SAH. In another embodiment, while instancing may substantially reduce memory requirements and hierarchy construction time, it may not reduce the overlap among instances. Thus, there may be cases where replacing the directed acyclic graph by its corresponding tree may result in superior performance. 
     In another embodiment, bounding volume hierarchy construction cost may be amortized across frames by keeping the hierarchy topology, updating leaf bounding boxes, and propagating the results up the hierarchy. See, for example, “State of the art in ray tracing animated scenes,” (Wald et al., In Eurographics 2007 State of the Art Reports, 2007), incorporated by reference in its entirety, which describes techniques for amortizing bounding volume hierarchy construction cost. In yet another embodiment, refitting may be complemented by a heuristic which may trigger rebuilds for degenerated parts of the hierarchy. See, for example, “RT-DEFORM: Interactive ray tracing of dynamic scenes using BVHs,” (Lauterbach et al., Symposium on Interactive Ray Tracing, 2006, 39-46), incorporated by reference in its entirety, which describes techniques for triggering rebuilds for degenerated hierarchy parts. 
     In addition, in one embodiment, in order to refit a leaf bounding box for the MSBVH, clipped primitives may be taken into account. For example, for a subsequent frame, each primitive may be re-clipped against the corresponding leaf bounding box of the hierarchy at the previous frame&#39;s shutter closing time. In this way, no additional geometry or hierarchy data may need to be stored. 
     Further, in one embodiment, acceleration hierarchy construction may be sped up by pre-sorting the primitive index array, for example according to primitive centroids. See, for example, “On building fast kd-trees for ray tracing, and on doing that in O(N log N),” (Wald et al., In Proceedings of the IEEE Symposium on Interactive Ray Tracing 2006, 61-69), incorporated by reference in its entirety, which describes techniques for pre-sorting primitive index arrays. In another embodiment, when primitives are split spatially, the centroids of the resulting references may need to be recomputed. In yet another embodiment, the sorting order of the reference index array may not be invalidated due to spatial splits. 
     For example, for each spatial split, a list of those primitives in the node that are duplicated due to a spatial split may be kept. In another example, centroids for those primitives may be recomputed, this array may be sorted, and a merge-sort step may be used to combine this array with the array of unsplit primitives. 
     Further still, in one embodiment, relying on one spatial split at a single time instant for the whole shutter interval may requires coherent motion. In another embodiment, even with this assumption fulfilled, primitives in one node may move into opposite directions with respect to a spatial split plane and change bounding boxes. Therefore, in one embodiment, instead of using the split plane for determining the hierarchy traversal order, it may be more efficient to determine the traversal order according to the parametric distance of the ray bounding box intersection. 
     Also, in one embodiment, using a single motion segment may not be a sufficient approximation for non-linear motion (e.g., a rotating propeller, etc.). In such cases multiple motion segments may be used for a single frame. In another embodiment, restricting the number of motion segments to 2 m  with equidistant times t i =i/2 m  may allow for the efficient determination of bounding boxes in case children in the hierarchy use different numbers of time samples. In yet another embodiment, the power-of-two restriction may guarantee that the existing motion segment endpoints for the children coincide, as only the maximum number of segments of the children may be taken and the children may be resampled with a smaller number of motion segments. 
     In this way, increasing the number of motion segments arbitrarily may be avoided when propagating bounding boxes from children to parents. For example, if arbitrary numbers of motion segments were allowed, the parent node of four children with 2, 3, 5, and 7 motion segments may need 2*3*5*7=210 motion segments to accurately represent the children&#39;s transformation interpolations without approximations. In one embodiment, this number may be equal to the least common multiple, which may motivate restricting the number of motion segments to powers of two. 
     Additionally, in one embodiment, nodes may be spatially partitioned during tree construction in order to reduce overlap in the presence of moving objects. The resulting hierarchies may be significantly cheaper to traverse than those generated by classic approaches. In another embodiment, the MSBVH may enable each ray to be traced at a time within the camera&#39;s shutter interval. In yet another embodiment, the MSBVH may support adjusting to that time in a very efficient way, thereby allowing for faster ray traced motion blur. 
       FIG. 4  illustrates an exemplary system  400  in which the various architecture and/or functionality of the various previous embodiments may be implemented. As shown, a system  400  is provided including at least one host processor  401  which is connected to a communication bus  402 . The system  400  also includes a main memory  404 . Control logic (software) and data are stored in the main memory  404  which may take the form of random access memory (RAM). 
     The system  400  also includes a graphics processor  406  and a display  408 , i.e. a computer monitor. In one embodiment, the graphics processor  406  may include a plurality of shader modules, a rasterization module, etc. Each of the foregoing modules may even be situated on a single semiconductor platform to form a graphics processing unit (GPU). 
     In the present description, a single semiconductor platform may refer to a sole unitary semiconductor-based integrated circuit or chip. It should be noted that the term single semiconductor platform may also refer to multi-chip modules with increased connectivity which simulate on-chip operation, and make substantial improvements over utilizing a conventional central processing unit (CPU) and bus implementation. Of course, the various modules may also be situated separately or in various combinations of semiconductor platforms per the desires of the user. In yet another embodiment, the platform may be realized as reconfigurable logic, which, for example, may include Field Programmable Gate Arrays (FPGA). 
     The system  400  may also include a secondary storage  410 . The secondary storage  410  includes, for example, a hard disk drive and/or a removable storage drive, representing a floppy disk drive, a magnetic tape drive, a compact disk drive, etc. The removable storage drive reads from and/or writes to a removable storage unit in a well known manner. 
     Computer programs, or computer control logic algorithms, may be stored in the main memory  404  and/or the secondary storage  410 . Such computer programs, when executed, enable the system  400  to perform various functions. Memory  404 , storage  410  and/or any other storage are possible examples of computer-readable media. 
     In one embodiment, the architecture and/or functionality of the various previous figures may be implemented in the context of the host processor  401 , graphics processor  406 , an integrated circuit (not shown) that is capable of at least a portion of the capabilities of both the host processor  401  and the graphics processor  406 , a chipset (i.e. a group of integrated circuits designed to work and sold as a unit for performing related functions, etc.), and/or any other integrated circuit for that matter. 
     Still yet, the architecture and/or functionality of the various previous figures may be implemented in the context of a general computer system, a circuit board system, a game console system dedicated for entertainment purposes, an application-specific system, and/or any other desired system. For example, the system  400  may take the form of a desktop computer, lap-top computer, and/or any other type of logic. Still yet, the system  400  may take the form of various other devices m including, but not limited to a personal digital assistant (PDA) device, a mobile phone device, a television, etc. 
     Further, while not shown, the system  400  may be coupled to a network [e.g. a telecommunications network, local area network (LAN), wireless network, wide area network (WAN) such as the Internet, peer-to-peer network, cable network, etc.) for communication purposes. 
     While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.