Ray tracing is becoming an important alternative as a rendering method in high-performance interactive applications. This includes industrial and scientific three-dimensional visualization, but also extends to non-graphical applications like collision detection or the simulation of sound wave propagation. One of the most interesting and technically demanding possible use cases is rendering in computer games, which requires very high and constant image refresh rates combined with highly dynamic content. These performance requirements are particularly difficult to meet in a ray tracing environment.
One aspect that makes ray tracing more difficult to use as compared to traditional triangle rasterization is the fact that some kind of spatial index data structure has to be constructed before rendering can begin. Index (or acceleration) structures are used to perform visibility culling operations by enabling early rejection of large parts of a scene that are not visible (e.g., objects that are occluded by a wall). Without such data structures, tracing a single ray would take linear time in the number of geometric primitives in the scene, which is too costly in almost all scenarios. Since constructing the required data structures comes at a certain cost as well, it has to be carefully evaluated when and for which parts of the scene to execute a build. Moreover, not all types of data structures are equally well suited in different contexts. Usually, the challenge is to find a good tradeoff between construction speed and ray-geometry intersection performance.
Constructing an acceleration data structure over all the geometric primitives in the scene from scratch each frame is usually infeasible, as this essentially requires a sorting process. Thus, interactive ray tracing applications typically employ a hierarchical scene graph like structure to represent the scene organization, including geometric primitives and spatial indices. Only when changes are detected, data structures are actually rebuilt or updated at different hierarchy levels.
The conventional hierarchical structure 100 is organized, such that the highest group node 140 represents the region of a scene which is to be rendered. Each of the geometry nodes 1101-110n, 160 includes a plurality of primitives that collectively define a particular geometry. A group node 120 is constructed over several geometry nodes 1101-110n, and defines an instantiation or graphical rendering of the combined geometries which are defined by each of the geometry objects 1101-110n. A sole geometry node 160 provides a second geometry that is included within the region represented by the hierarchical group node 140.
As shown, the conventional hierarchical structure 100 implements an acceleration structure in each group 120, 140 and geometry node 1101-110n, 160. Further particularly, the acceleration structures in geometry node are constructed over the geometric primitives of the node, while the acceleration structures in the groups are built over the bounding volumes (usually axis-aligned bounding boxes) of the underlying children.
For the vast majority of use cases, building acceleration structures at the group level is much cheaper compared to building acceleration structures at the geometry object level, as the number of elements to consider at the group level is much lower. As a consequence, some systems rebuild only the top-level structure every frame while not allowing rebuilds of the lower level geometry at all. In such an instance, however, only rigid transformations are efficiently supported. For non-rigid transformations, geometry objects have to be explicitly replaced by new geometry. Other systems do permit some additional flexibility, allowing, for example, arbitrary hierarchy depth, or incremental updates of acceleration structures in order to support deformation of geometry. However, these systems still operate using the same principle of associating one acceleration structure with each geometry node and each group node. Such an arrangement however requires a rebuild of the acceleration within the geometry nodes 1101-110n, 160 whenever there is a change in the geometry defined by the geometry nodes, such a rebuild being computationally expensive and time consuming.
A hierarchical structure for accelerating ray tracing operations is presented herein which addresses one or more of the aforementioned disadvantages. The hierarchical structure includes a plurality of geometry objects, and a single acceleration structure constructed over the collective plurality of geometry objects. Each geometry object includes primitives of a predefined type. The primitives within the plurality of geometry objects collectively define a geometry included within a region of the scene which is to be rendered. The single acceleration structure is operable for accelerating ray tracing operations for the primitives included within the plurality of geometry objects, and is constructed over the plurality of the geometry objects without an intervening bounding volume representation of the plurality of primitives included within the geometry objects.
In other embodiments of the invention, a system and method for constructing a hierarchical structure representing a region of a scene which is to be rendered are presented. The method includes organizing geometric primitives included within the region of the scene into a plurality of geometry objects, and constructing a single acceleration structure over the plurality of geometry objects. Each geometry object includes primitives of a predefined type. The primitives included within the plurality of geometry objects collectively define a geometry included within a region of a scene which is to be rendered. The single acceleration structure is operable for accelerating ray tracing operations for the primitives included within the plurality of geometry objects, and is constructed over the plurality of the geometry objects without an intervening bounding volume representation of the plurality of primitives included within the geometry objects.
In further embodiments of the invention, a system and method for rendering a region of a scene are presented. The method includes the aforementioned method of constructing a hierarchical structure representing a region of a scene, whereby primitives are organized into a plurality of geometry objects. A single acceleration structure is constructed over the plurality of geometry objects, whereby the construction excludes an intervening bounding volume representation of the plurality of primitives included within the geometry objects. The method further includes tracing a ray against the constructed hierarchical structure to render the region of the scene.
These and other aspects of the invention will be better understood in view of the following drawings and detailed description of some exemplary embodiments of the invention.
For clarity, previously referred to features retain their indices in subsequent drawings.
In accordance with the present invention, a new hierarchical structure is presented which represents a particular region of a scene which is to be rendered. The acceleration structures of the hierarchical structure are not associated with geometry objects of the hierarchical structure. Instead in the present invention, a new geometry group is introduced which is linked to an acceleration structure. The acceleration structure is constructed over all of the primitives contained in the child geometry objects, rather than over their node bounding volumes, as in prior art hierarchical structures. Compared to prior art approach in which a separate acceleration structure is associated with each geometry object and placing the geometric objects into a group (with an acceleration structure built over that group's bounding volumes), the arrangement of the present invention provides improved ray tracing performance, particularly when object bounding volumes overlap.
The primitives within the plurality of geometry objects 2121-212n collectively define a geometry with a region of a scene which is to be rendered. As an example, the hierarchical structure 200 may correspond to the region of a wheel for a car which is to be rendered. The geometry objects, exemplary two: a first geometry object 2121 containing rectangles to form a parallelogram, and a second geometry object 2122 (not explicitly shown) containing triangles to form a triangular mesh, collectively define a particular geometry of the wheel region, e.g., the rim of the wheel. That is, the rectangular and triangular primitives collectively form the geometry of the rim in the illustrated example. Other parts of the wheel region (e.g., the tire of the wheel) are defined by one or more additional geometry groups of the hierarchical group node, as will be described below.
The number of geometry objects 212 may be any arbitrary, and range from 2 to 100, or more, and more particularly 2 to 10. The invention is not limited to a particular number of geometry objects, and any number may be used in accordance with the invention. Further exemplary, each geometric object is associated with (i.e., linked to) a bounding box program and an intersection program, one or both of which are shared among the primitives of a geometry object.
The hierarchical structure 200 further includes a single acceleration structure 214 which is operable to accelerate ray tracing operations for the primitives included within the plurality of geometry objects 2121-212n. In contrast to the conventional arrangement, the single acceleration structure is constructed over the plurality of the geometry objects without an intervening bounding volume representation of the plurality of primitives included within the geometry objects. In other words, a single acceleration structure is constructed over the geometric primitives of all geometry objects 2121-212n combined, without considering a bounding volume representation of each individual geometry object.
Further exemplary, the hierarchical structure 200 includes a geometry group 216 which forms a common node for the plurality of geometry objects 2121-212n. The geometry group 216 defines an instantiation (i.e., a graphical representation or rendering) of the geometry that is defined by the primitives included within the plurality of geometry objects 212. The geometry group 216 may also include (or receive as an input) additional information about the material which is to be rendered, for example, the color, level of detail, or other aspects of the geometry's material property which are to affect the appearance of the geometry. In a particular embodiment, several geometry groups share the same underlying geometry objects 2121-212n, and thus will render the same geometry, although can provide a different instantiation of that geometry. In this manner, the same geometry can be rendered with different materials or, more generally, different sets of input parameters or operations to be performed upon intersection of a ray and a primitive. An exemplary embodiment of this arrangement is further illustrated and described in connection with
Further exemplary, the hierarchical structure 200 includes a transform node 220 constructed over the geometry group 216 and operable to perform a transformation of a geometry defined by the primitives included within the plurality of geometry objects 2121-212n. The transform node represents a space transformation of the nodes or sub-tree below it, and exemplary is a 4×4 or a 4×3 matrix describing the transformation. Any conventional implementation of this node can be employed in accordance with the present invention.
Also exemplary, the hierarchical structure 200 includes a hierarchical group node 230 which is constructed over the transform node 220 and which corresponds to the region of the scene which is to be rendered. The hierarchical group node 230 is characterized by a bounding volume representation of the region which is to be rendered, and contains the primitives included within the geometry objects 2121-212n. The hierarchical structure 200 further includes a second acceleration structure 240 constructed over the bounding volume representation of the hierarchical group node 230 and operable to accelerate ray tracing operations for the primitives included within the bounding volume representation.
In a particular embodiment of the invention, the hierarchical structure 200 includes one or more sub-trees, each sub-tree defining an instantiation of a particular geometry within the region that is defined by it parent hierarchical group node. Each sub-tree includes a geometry group, and a single acceleration structure which is constructed over the primitives included within the child geometry objects of the geometry group. Features 212, 214, and 216 represent an example of such a sub-tree 210. Per the above-described exemplary embodiment in which the hierarchical group node 230 represents a wheel region which is to be rendered and sub-tree 210 defines a first instantiation of the wheel region, e.g., a rim of the wheel region, the additional sub-tree structure 250 can operate to define a second instantiation of the region, for example a tire which is mounted on the rim.
The second sub-tree structure 250 includes a geometry object 252, a geometry group 256, and an acceleration structure 254. The geometry object 252 includes primitives which defines a second geometry included within the region corresponding to the hierarchical group node 230, e.g., the tire of the wheel region in the exemplary embodiment. The acceleration structure 254 is constructed over the primitives included within the geometry object 252, the acceleration structure omitting a bounding volume representation of those primitives. The geometry group 256 defines an instantiation of the primitives included within the geometry object 252. A transform node 260 is constructed over the geometry group 256 and is operable to perform a transformation of the instantiation which is defined by the geometry group 256. Exemplary, the transformation is an affine spatial transformation and is carried out using a 4×4 or a 4×3 matrix describing the transformation.
Collectively, the primitives included within the geometry objects 2121-212n and 252 represent all of the primitives included within the region corresponding to the hierarchical group node 230, and accordingly the bounding volume of the hierarchical group node 230 contains all of these primitives. The acceleration structure 240 is constructed over the bounding volume of the hierarchical group node 240 and is operable to accelerate ray tracing operations for these primitives.
As will be understood, the hierarchical structure of the present invention allows for a simpler combination of different geometry properties. For example, an acceleration structure can be easily built over several types of geometric primitives. Further exemplary, each type of primitive may be stored in a separate geometry object. In addition, keeping geometry objects conceptually separated provides an efficient and straightforward way to inform the construction routine as to which parts of the actual underlying geometry have changed, which can be useful to speed up the construction process.
The hierarchical structure of the present invention can be realized as a data structure stored on a computer readable medium, for example, volatile or non-volatile memory. Further exemplary, the acceleration structure(s), exemplary implemented as a data structure stored on a computer readable medium, is linked to the hierarchical structure as described above.
Further exemplary, the hierarchical structure 300 employs an acceleration structure 214 which is shared between the first and second geometry groups 216 and 356. More generally, one acceleration structure can be shared between any number of geometry groups that share a common underlying geometry, i.e., have the same one or more geometry objects. The new hierarchical structure allows multiple separate groups to share geometric concepts, while differing in all other attributes that a group may contain. This arrangement minimizes the required memory footprint and construction time for the acceleration structure compared to using separate acceleration structures dedicated to each geometry group. Instancing can be implemented as inexpensive reuse of scene objects or parts of the hierarchy by referencing nodes (e.g., the aforementioned groups 230, geometry groups 216, 356, and/or geometry objects 212) multiple times instead of duplicating them. The sharing of an acceleration structure can be performed at any level of the hierarchy, and attaching/detaching an acceleration structure to/from a geometry group can be implemented as a highly efficient operation at runtime.
For prior art hierarchical structures, reconstruction of the acceleration structure is conventionally handled by propagating changes made to the geometry objects or transformation nodes to upper levels of the scene hierarchy, and rebuild all data structures encountered along the way. This is usually necessary, since in most cases, e.g. when a geometry object is deformed, its bounding volume changes, and thus a rebuild of the upper level data structure becomes necessary.
In an exemplary embodiment of the present invention, the client application explicitly marks each acceleration structure dirty if it needs a rebuild, and there is no automatic propagation of dirty flags. When a geometry group undergoes changes, it is not guaranteed that the associated acceleration structure will require rebuilding. For instance, in case a geometry group is exchanged against another one with the same spatial bounds, the resulting parent node acceleration structure would look exactly like the already existing one, and thus the cost of a reconstruction can be avoided. This notion of being flexible in terms of which objects the acceleration is built on (as opposed to what they look like) also fits very well into the concept of decoupling acceleration structures from the scene graph itself and attaching the acceleration structures to multiple geometry groups. Preferably, the basic elements on which the acceleration structure is built is referenced, e.g., using a child index.
Further exemplary, the client application also marks geometry objects as dirty whenever they would cause a change in the acceleration structure constructed over them. When an acceleration structure is built over more than one geometry objects (i.e. when the geometry group to which the structure is attached to has more than one child), the build routine may take advantage of “knowing” which pieces of geometry have undergone changes. It may then be able to cache certain pieces of data, and avoid re-computing the entire acceleration structure from scratch.
At 404, a single acceleration structure 214 is constructed over the plurality geometry objects 212 for accelerating ray tracing operations for the primitives included therein. Further particularly, the single acceleration structure 214 is constructed over the plurality of geometry objects 212 without an intervening bounding volume representation of the plurality of primitives.
The method 400 may include one or more additional operations consistent with construction of the hierarchical structures illustrated in
Consistent with the construction of the hierarchical structure shown in
Consistent with the construction of the hierarchical structure shown in
In one embodiment, system 600 is operable to perform the operations illustrated in
In another embodiment, system 600 is operable to perform the operations illustrated in
As readily appreciated by those skilled in the art, the described processes and operations may be implemented in hardware, software, firmware or a combination of these implementations as appropriate. In addition, some or all of the described processes and operations may be carried out as a computer-implemented method, or as computer readable instruction code resident on a computer readable medium, the instruction code operable to control a computer of other such programmable device to carry out the intended functions. The computer readable medium on which the instruction code resides may take various forms, for example, a removable disk, volatile or non-volatile memory, etc.
In a particular embodiment of the invention, a memory (which may be included locally within the processor 620 or globally within system 600) is operable to store instructions for performing any of the operations illustrated in
The terms “a” or “an” are used to refer to one, or more than one feature described thereby. Furthermore, the term “coupled” or “connected” refers to features which are in communication with each other, either directly, or via one or more intervening structures or substances. The sequence of operations and actions referred to in method flowcharts are exemplary, and the operations and actions may be conducted in a different sequence, as well as two or more of the operations and actions conducted concurrently. Reference indicia (if any) included in the claims serves to refer to one exemplary embodiment of a claimed feature, and the claimed feature is not limited to the particular embodiment referred to by the reference indicia. The scope of the claimed feature shall be that defined by the claim wording as if the reference indicia were absent therefrom. All publications, patents, and other documents referred to herein are incorporated by reference in their entirety. To the extent of any inconsistent usage between any such incorporated document and this document, usage in this document shall control.
The foregoing exemplary embodiments of the invention have been described in sufficient detail to enable one skilled in the art to practice the invention, and it is to be understood that the embodiments may be combined. The described embodiments were chosen in order to best explain the principles of the invention and its practical application to thereby enable others skilled in the art to best utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined solely by the claims appended hereto.
Number | Name | Date | Kind |
---|---|---|---|
4897806 | Cook et al. | Jan 1990 | A |
5113493 | Crosby | May 1992 | A |
5222203 | Obata | Jun 1993 | A |
5239624 | Cook et al. | Aug 1993 | A |
5289565 | Smith et al. | Feb 1994 | A |
5299298 | Elmquist et al. | Mar 1994 | A |
5357579 | Buchner et al. | Oct 1994 | A |
5384667 | Beckwith | Jan 1995 | A |
5402534 | Yeomans | Mar 1995 | A |
5465119 | Demos | Nov 1995 | A |
5684935 | Demesa, III et al. | Nov 1997 | A |
5729672 | Ashton | Mar 1998 | A |
5737027 | Demos | Apr 1998 | A |
5809219 | Pearce et al. | Sep 1998 | A |
5870096 | Anjyo et al. | Feb 1999 | A |
5933146 | Wrigley | Aug 1999 | A |
5973700 | Taylor et al. | Oct 1999 | A |
5982385 | Fish et al. | Nov 1999 | A |
6034667 | Barrett | Mar 2000 | A |
6211882 | Pearce et al. | Apr 2001 | B1 |
6300956 | Apodaca et al. | Oct 2001 | B1 |
6618048 | Leather | Sep 2003 | B1 |
6636214 | Leather et al. | Oct 2003 | B1 |
6700586 | Demers | Mar 2004 | B1 |
6707458 | Leather et al. | Mar 2004 | B1 |
6717577 | Cheng et al. | Apr 2004 | B1 |
6720975 | Dietrich, Jr. | Apr 2004 | B1 |
6811489 | Shimizu et al. | Nov 2004 | B1 |
6867781 | Van Hook et al. | Mar 2005 | B1 |
6885384 | Deering et al. | Apr 2005 | B2 |
6999100 | Leather et al. | Feb 2006 | B1 |
7002591 | Leather et al. | Feb 2006 | B1 |
7034828 | Drebin et al. | Apr 2006 | B1 |
7050066 | Ohta | May 2006 | B2 |
7061502 | Law et al. | Jun 2006 | B1 |
7075545 | Van Hook et al. | Jul 2006 | B2 |
7119813 | Hollis et al. | Oct 2006 | B1 |
7133041 | Kaufman et al. | Nov 2006 | B2 |
7133047 | Pallister | Nov 2006 | B2 |
7136081 | Gritz et al. | Nov 2006 | B2 |
7176919 | Drebin et al. | Feb 2007 | B2 |
7184059 | Fouladi et al. | Feb 2007 | B1 |
7187379 | Keller | Mar 2007 | B2 |
7196710 | Fouladi et al. | Mar 2007 | B1 |
7205999 | Leather | Apr 2007 | B2 |
7230618 | Keller | Jun 2007 | B2 |
7307638 | Leather et al. | Dec 2007 | B2 |
7307640 | Demers et al. | Dec 2007 | B2 |
7317459 | Fouladi et al. | Jan 2008 | B2 |
7362332 | Gritz | Apr 2008 | B2 |
7403494 | Lee et al. | Jul 2008 | B2 |
7446780 | Everitt et al. | Nov 2008 | B1 |
7453460 | Keller | Nov 2008 | B2 |
7453461 | Keller | Nov 2008 | B2 |
7477261 | Pallister | Jan 2009 | B2 |
7483010 | Bai et al. | Jan 2009 | B2 |
7499054 | Keller | Mar 2009 | B2 |
7538772 | Fouladi et al. | May 2009 | B1 |
7576748 | Van Hook et al. | Aug 2009 | B2 |
7616200 | Heinrich et al. | Nov 2009 | B1 |
7623726 | Georgiev | Nov 2009 | B1 |
7697010 | Pallister | Apr 2010 | B2 |
7701461 | Fouladi et al. | Apr 2010 | B2 |
7742060 | Maillot | Jun 2010 | B2 |
7961970 | Georgiev | Jun 2011 | B1 |
7973789 | Cook | Jul 2011 | B2 |
7995069 | Van Hook et al. | Aug 2011 | B2 |
8098255 | Fouladi et al. | Jan 2012 | B2 |
8289324 | Laine et al. | Oct 2012 | B1 |
8970584 | Aila et al. | Mar 2015 | B1 |
9142043 | Aila et al. | Sep 2015 | B1 |
9147270 | Lehtinen et al. | Sep 2015 | B1 |
9153068 | Laine et al. | Oct 2015 | B2 |
20020078005 | Shi et al. | Jun 2002 | A1 |
20030083850 | Schmidt et al. | May 2003 | A1 |
20030225781 | Kusterer et al. | Dec 2003 | A1 |
20030234789 | Gritz | Dec 2003 | A1 |
20040249796 | Azzam | Dec 2004 | A1 |
20060101242 | Siu et al. | May 2006 | A1 |
20070046686 | Keller | Mar 2007 | A1 |
20080001961 | Roimela et al. | Jan 2008 | A1 |
20080091435 | Strope et al. | Apr 2008 | A1 |
20080244241 | Barraclough et al. | Oct 2008 | A1 |
20090167763 | Waechter et al. | Jul 2009 | A1 |
20090213115 | Keller et al. | Aug 2009 | A1 |
20090225080 | Keller et al. | Sep 2009 | A1 |
20100077010 | Aila et al. | Mar 2010 | A1 |
20100079451 | Zhou et al. | Apr 2010 | A1 |
20110090337 | Klomp et al. | Apr 2011 | A1 |
20120218264 | Clarberg et al. | Aug 2012 | A1 |
20120293515 | Clarberg et al. | Nov 2012 | A1 |
20130321420 | Laine et al. | Dec 2013 | A1 |
Number | Date | Country |
---|---|---|
1856805 | Nov 2006 | CN |
101599181 | Dec 2009 | CN |
2012115711 | Aug 2012 | WO |
Entry |
---|
Djeu P., Hunt W., Wang R., Elhassan I., Stoll G., Mark W. R., “Razor: An Architecture for Dynamic Multiresolution Ray Tracing.” Tech. rep., University of Texas at Austin Dep. of Comp. Science, 2007. Conditionally accepted to ACM transactions on Graphics. |
Lauterbach, C., Garland, M., Segupta, S., Lubke, D., and Manocha, D. “Fast BVH Construction on GPUs.” Computer Graphics Forum. Proceedings of Eurographics, 28, 2, 375-384, 2009). |
Parker, S., Bigler, J., Dietrich, A., Friedrich, H., Hoberock, J., Luebke, D., McAllister, D., McGuire, M., Morley, K., Robison, A., and Stich, M., “OptiX™: A General Purpose Ray Tracing Engine,” ACM Transactions of Graphics SIGGRAPH Jul. 27, 2010, Los Angeles, CA, USA. |
Stich, M, Friedrich, H., and Dietrich, A. 2009. “Spatial Splits in Bounding Volume Hierarchies.” In Proceedings of High-Performance Graphics 2009, 7-13. |
Wald, I., Benthin, C., and Slusallek, P. “Distributed Interactive Ray Tracing of Dynamic Scenes.” 2003 In Proc. IEEE symp. on parallel and large-data visualization and graphics. |
Wald, I. and Mark, W. and Gunther, J. and Boulos, S. and Ize, T. and Hunt, W. and Parker, S. and Shirley, P. “State of the Art in Ray Tracing Animated Scenes.” Computer Graphics Forum, v28, (6), p. 1691-1722, 2009, Wiley Online Library. |
S. Parker, J. Bigler, A. Dietrich, H. Friedrich, J. Hoberock, D. Luebke, D. McAllister, M. McGuire, K. Morley, A. Robison, and M. Stich, “OptiX™: A General Purpose Ray Tracing Engine,” ACM Transactions of Graphics (SIGGRAPH Jul. 27, 2010, Los Angeles, CA, USA). |
I. Wald, “Realtime Ray Tracing and Interactive Global Illumination,” PhD thesis, Computer Graphics Group, Saarland University, 2004. |
J. Bigler, A. Stephens, and S. Parker, “Design for Parallel Interactive Ray Tracing Systems,” Proceedings of the IEEE Symposium on Interactive Ray Tracing, 2006, pp. 187-196. |
Hou, Q., et al., “Micropolygon Ray Tracing with Defocus and Motion Blur,” ACM Transactions on Graphics (TOG), vol. 29, Article 64, Jul. 2010, pp. 1-10. |
Laine, S., et al., “Clipless Dual-Space Bounds for Faster Stochastic Rasterization,” ACM Transactions on Graphics (TOG), vol. 30, Issue 4, Article 106, Jul. 2011, pp. 1-6. |
Moller., et al., “Stochastic Rasterization Using Time-Continuous Triangles,” ACM, Jan. 2007, pp. 1-11. |
Wang Liqing; Research on Algorithms of Computational Geometry in GIS; China Master'S Theses Full-Text Database; Jan. 31, 2009. |
McGuire, et al; “Hardware-Accelerated Global Illumination by Image Space Photon Mapping”, HPG 2009, New Orleans, Louisiana, Aug. 1-3, 2009. |
Linsen, et al; “Splat-based Ray Tracing of Point Clouds”, Journal ofWSCG 15: 51-58, 2007. |
Schaufler, et al; “Ray Tracing Point Sampled Geometry”, In Proceedings of the Eurographics Workshop on Rendering Techniques 2000, p. 319-328, London, UK, 2000. Springer-Verlag. |
P Haberli and K. Akeley, “The Accumulation Buffer: Hardware Support for High Quality Rendering,” in Proc. SIGGRAPH 1990. pp. 309-318. |
Kayvon Fatahalian, Edward Luong, Solomon Boulos, Kurt Akeley, William R. Mark, and Pat Hanrahan, “Data-Parallel Rasterization of Micropolygons with Defocus and Motion Blur,” Proc. High Performance Graphics 2009. |