The following relates to approaches to 3-D rendering and architectures for performing 3-D rendering.
3-D rendering involves producing images from 3-D scene descriptions. The images can be photorealistic, or achieve other objectives. For example, animated movies can be produced using 3-D rendering techniques.
A variety of techniques for performing 3-D rendering are known. Two principal categories of 3-D rendering are rasterization oriented approaches, and ray tracing oriented approaches. Rasterization involves defining a view point for a 3-D scene containing geometry and a pixel array to be rendered from the scene. In most rasterization approaches, the geometry is reduced to triangular primitives, and those primitives are transformed into 2-D coordinates, with a depth value. It is determined what primitive is visible from each pixel (or part of a pixel), and that visible surface is shaded. Rasterization benefits from being able to easily parallelize computation, because each pixel is independent, and geometry can be streamed geometry through a rasterization pipeline for processing. Rasterization thus is still the leading approach to time sensitive rendering applications, such as video games. However, it is difficult and time consuming to produce sophisticated rendering outputs using rasterization
Ray tracing can model the natural interaction of light with objects, and sophisticated rendering features can naturally arise from ray tracing a 3-D scene. Ray tracing can be parallelized relatively easily on the pixel by pixel level also, because pixels generally are independent of each other. However, ray tracing cannot be pipelined in the same way as rasterization, because of the distributed and disparate positions and directions of travel of the rays in the 3-D scene, in situations such as ambient occlusion, reflections, caustics, and so on.
In one aspect, a method of rendering comprises identifying one or more visible surfaces, from among surfaces in a 3-D scene, from a view position. The identified one or more visible surfaces comprise visible surfaces for a plurality of pixels located in 2-D screen space. The method provides for preparing, concurrently with the identifying, to execute shaders associated with respective visible surfaces of pixels that have completed the identifying. The preparing includes completing a respective normalized set of inputs to be provided to each shader for use during execution. The method also includes executing each of the shaders, in a computation cluster. Each of the executing shaders comprises one or more operations, selected from operations including defining one or more rays to be tested for intersection with surfaces in the 3-D scene. The method also includes intersection testing at least some of the rays concurrently with the identifying and the executing of the shaders; and shading identified intersections for rays completing intersection testing within the computation cluster.
In another aspect, a method of rendering comprising inputting geometry data describing surfaces located in a 3-D scene and tesselating inputted geometry and outputting tesselated geometry. The method includes receiving the tesselated geometry in a ray tracing acceleration structure builder and forming an acceleration structure for use in ray intersection testing of the tesselated geometry. The method also includes transforming the tesselated geometry from a primary viewer position and for a pixel array of a defined resolution and location, into 2-D pixel coordinates, with depth. The transformed tesselated geometry is rasterized to determine at least one visible surface for each pixel of the pixel array. For each visible surface, one or more shaders are executed in a shared shader computation unit, where the executing for one or more of the fragment shaders comprises using an API semantic to obtain 3-D coordinates for vertices defining the visible surface. Tesselation can be performed in real-time for portions of the 3-D scene, and tesselated geometry can be fed to ray tracing processes, including intersection testing and acceleration structure building, responsive to ray intersection testing progress. Systems can include functional units to implement these processes.
An example aspect according to the disclosure includes a fixed function ray intersection testing unit, which is operable to return data for a detected intersection, and a scan conversion pipeline capable of identifying visible surfaces for fragments or pixels of an image. Each of these units couples with a shader pre-processing unit configured to produce common parameter data so that outputs of each unit can be used by one or more instances of the same shading code.
A further example aspect relates to systems and methods for controlling a cache of tile-based rendering outputs based on a status of processing of rays that may contribute to a final color of a pixel within a given tile. A further example aspect relates to systems and methods for scheduling rays for intersection testing and/or shading based on status of which rays will contribute to which screen tiles, during rendering using a hybrid approach of both rasterization and ray tracing. A further example relates to systems and methods for scheduling geometry transformation or tesselation tasks on demand, based on joint ray tracing and rasterization status information. These transformations or tasks can be implemented in special purpose circuitry and/or programmable computation units.
Other constituent elements of architectures and processes implemented on such architectures can include ray population control features, which relatively prioritize ray processing tasks, according to status and objectives, and also can control a rate of processing in rasterization.
The following disclosure includes multiple examples of graphics processing architectures, in which a unified computation resource performs shading work concurrently for surfaces identified by both ray tracing and by rasterization techniques. In one aspect, a unified computation resource executes shaders based on a normalized set of inputs, and a given surface is shaded by an associated shader module, regardless whether that surface is to be shaded responsive to a ray intersection or during rasterization. In another aspect, different shader code modules may exist for shading ray tracing intersections and for rasterization. In implementations according to such aspects, surface shaders for rasterization offer a capability to emit rays to be intersection tested, and to perform shading, in dependence on the results of intersection testing that ray.
In some implementations of the disclosure, there are multiple concurrently executing processes that either have dedicated hardware for performing those processes, or are scheduled on the unified computation resource. In one example, a rasterization unit inputs scene geometry and performs rasterization operations to produce visible surfaces for pixels, which are to be shaded, a ray intersection testing unit traverses rays through a scene hierarchy, and tests rays for intersection with 3-D scene geometry to identify ray intersections, which are to be shaded. The shading in both cases is scheduled on a unified computation resource.
The unified computation resource also can be scheduled to execute geometry shader and transformation operations. As a specific example, where a shader invoked in response to rasterization emits a ray, that shader continues executing and ultimately completes its execution, without being involved in the processing of the ray that it emitted. Rather, in such an example, the ray is processed as a separate and independent computation workload by the ray intersection testing unit, and as necessary, the unified shader resource. Thus, the rasterization-invoked shader does not itself include the computations for testing a ray with elements of a scene hierarchy, for example. As such, ray tracing and rasterization operations proceed concurrently in a wide variety of situations. With this overview, more details are presented in the following disclosure.
Regardless whether 3-D rendering is being performed using rasterization techniques or ray tracing (or both), two principal categories of activities to be performed are (1) identifying surfaces of 3-D scene geometry that may need to be shaded or otherwise processed during rendering of a 2-D image; and (2) determining what effect that surface should have on an image being rendered. However, these constituent operations have different processing, data access, and data flow implications for rasterization and for ray tracing.
Rasterization oriented aspects of architecture 50 are discussed first. A scan conversion module 64 receives a stream 52 of transformed geometry. Stream 52 is shown as being outputted from a shader execution environment 86 (described below). Transformed geometry 5 is geometry that was defined in a 3-D coordinate space, and was perspective transformed into a 2-D pixel coordinate system, and which can include depth information. The perspective from which the transformation is made can include a viewpoint, from which a 2-D pixel array is to be rendered from the 3-D scene. The transformed geometry 5 can be read from a memory, or be produced on the fly or some combination thereof. In addition to perspective transformation, a variety of other transformations can be performed on 3-D geometry, such as from 3-D model coordinates to 3-D world coordinates. In any case, in this example, scan conversion module 64 can receive a stream of transformed vertices, representing primitives on which scan conversion module 64 will operate.
Scan conversion module 64 is responsible for determining which pixels or fragments of pixels are within a boundary of the surface defined by the transformed vertices performs scan conversion on an input stream 52 of geometry. This scan conversion module 64 can receive vertices for geometry that is found to be potentially visible from the viewpoint represented by the perspective transformation (e.g., following clipping, backface culling, and so on).
Scan conversion module 64 can proceed differently in different implementations. For example, in a deferred shading architecture, all the geometry that is potentially visible within a pixel is scan converted, and those surfaces that are found to contribute to an image (for simplicity, called “visible surface(s)”) are found before any surface shading is performed (surface shading here being used to refer to executing code in shader execution environment 86, identified based on the surface). Deferred shading avoids performing work that ultimately will not contribute to the rendering, because a particular shaded surface ultimately may be obscured by another surface, closer to the viewpoint. In an architecture implementing an immediate mode, each time a primitive is scan converted, a surface shader can be invoked to shade that surface, even though that surface may ultimately be obscured by a closer surface. By further example, scan conversion can be performed for tiles of pixels, such as a rectangular or square tile of pixels, such as an 4×4, or an 8×8 tile, and scan conversion does not imply processing pixels in a linear sequence.
Additionally, scan conversion module 64 includes interpolation circuitry 65, which performs interpolations on attributes associated with the transformed vertices. For example, during scan conversion, scan conversion module 64 interpolates vertex attributes across a surface defined by the vertices (recall that the surface was defined in 3-D space by 3-D coordinates, but was mapped to 2-D pixel space, and these interpolations are performed in the 2-D pixel space), in order to determine values for the attributes at specific points on the primitive. For example, vertices may include a variety of attributes, such as normals, texture coordinates, and color. Depending on what kinds of shading algorithms are used, these kinds of data are interpolated to produce pixel or fragment specific values. For example, vertex normals can be interpolated across the 2-D pixel space occupied by the primitive being scan converted. Interpolated attributes can be stored. In some implementations, interpolations can be performed only for surfaces determined to be visible, or only for the visible portions of a given surface. Such visibility can include visibility at a pixel of an image being rendered, or visibility from a ray origin (such as determined by a ray that intersected a point).
Outputs of scan conversion module 64 are buffered in buffer 66, which feeds a normalizer 74. Normalizer 74 comprises a set of functionality that normalizes outputs of visible surface determination, such as an interpolator 75, a viewer calculation module 76, and a shader ID module 77. Although
Normalizer 74, in addition to receiving outputs of scan conversion module 64 (e.g., through buffering 66), receives outputs of a ray intersection tester 60. Ray intersection tester 60 has random read access to a scene database 54 and an acceleration structure database 56. Scene database 54 stores 3-D coordinates for surfaces of scene geometry (which was transformed for scan converter 64, as described above). Acceleration structure database 56 stores an acceleration structure that abstracts portions of the geometry, so that rays are first tested against elements of the acceleration structure to identify smaller subsets of geometry to test for intersection with each ray. In an example implementation, ray intersection tester 60 operates to test collections of rays concurrently, where those collections are maintained by a ray collector 62, which can have a local memory store that tracks collections of rays in association with acceleration structure element(s) to be tested for intersection with rays of such collection. Ray intersection tester 60 receives rays to be tested for intersection from a ray setup module 88, which interfaces with shaders executing in shader execution environment 86. In some examples, a fast memory, local to ray intersection tester 60, stores ray definition data and other information, such as a current closest detected intersection, for rays being processed by tester 60. Ray definition data 89 can be populated by ray setup 88. Outputs of ray intersection tester can be buffered by buffer 68, which in turn provides inputs to normalizer 74. Such outputs can include information identifying an intersection or intersections (e.g., a closest intersection) for a given ray, as well as other intersection information, such as barycentric coordinates or other information about a hit point on a primitive. Such information can also be expressed as a reference to a location in memory from which normalizer 74 can read.
Returning to normalizer 74, normalizer 74 can have access to transformation matrices 70, which were used during geometry setup to produce transformed geometry stream 52. Normalizer 74 also can have access to transform buffer(s) 78, which store portions of scene geometry (e.g., vertex and/or parameter data) after one or more transformations have been effected on the geometry; buffer(s) 78 may be provided, for example, because some implementations do not necessarily save geometry data, such as transformed vertex data, once it passes through scan conversion. Normalizer 74 also can have read access to scene database 54. As described in more detail below, normalizer 74 functions to produce or provide shader setup data in a way that can be consumed by a shader, regardless whether the surface to be shaded was produced (or identified for shading) by ray intersection tester 60 or by scan converter 64.
Normalizer 74 outputs normalized shader setup data to buffer 82, which feeds shader execution environment 86. Shader execution environment can have access to scene database 54, transformation matrices 70, global rendering setup data (uniforms 80), a read/update/write cache 84, and render target(s) 90. Here, cache 84 is identified separately from render target(s) 90, although both in effect can store results of shading computations, and also serve as a source of inputs to shading computations. Functionality and interoperation of various components of
As can be discerned by one of ordinary skill, normalizer 74 is to prepare a set of inputs that will satisfy a shader for a surface, where that shader may perform processes traditionally associated with ray tracing as well as processes traditionally associated with rasterization-oriented shading. In a sense, normalizer 74 abstracts a type of visible surface determination that is causing a particular shader to be invoked.
Similarly, buffer 68 is populated with data from ray intersection testing, which may include, as in the example of
Another example treats data resulting from surfaces identified by ray intersection testing. Ray intersection testing may generate barycentric coordinates of a hit point on a primitive, a distance from a view position, and a primitive identifier.
In brief, barycentric coordinate weights allow for identifying a point on a plane of a triangle as a weighted linear combination of vertices of the triangle, in a circumstance where the barycentric weights are all positive and add to one (so that the point is on the plane of the triangle). These barycentric coordinates are a natural byproduct of some ray intersection testing algorithms.
However, interpolated data for that hit point (or other points on the surface) would not be provided from ray intersection tester 60. Normalizer 74 contains interpolator 75, to which can be inputted the barycentric coordinates of the hit point. Normalizer 74 also can provide 3-D coordinate positional information for the vertices defining the identified surface, as well as obtaining or accessing information bound to those vertices (e.g., normals, texture coordinates, and so on). The barycentric coordinates are used to interpolate the values of the vertex attributes to provide a set of attributes that would be expected to be available from a scan converter.
For example, at 412, barycentric weights for a point on a primitive to be shaded (a visible surface) are accessed. 3-D coordinates for vertices of the primitive can be accessed at 414, and at 416, an estimate of a point on the primitive from which to cast a ray can be made. At 418, the data can be made available for a shader execution environment. For example, this data may be stored in a memory that can be accessed by the shader execution environment.
Ray intersection testing unit 212 outputs indications 215 of ray intersections, while scan converter 209 outputs fragment or pixel data 21. A set of cores 219 receives outputs 213 and 215, and a scheduler 217 determines how cores 219 are allocated for executing shaders invoked in response to outputs 213 and 215. For example, shading cores 219 can execute shader module instances 221-223, which can be instances of the same shader module or of various shader modules. Cores 219 can share texturing functions 225, such as texture decompression, and sampling circuitry. Cores 219 can execute using data stored in thread local storage 224, as well as using a main memory 226 hierarchy.
Global scheduling and control logic also may execute on shading cores 219 and use API semantics 230-232. For example, API semantic 230 and 232 may be used to obtain information on ray intersection testing status and direct or control tesselator to perform on-demand tesselation of geometry, in coordination with collections of rays being ready to test that tesselated geometry for intersection.
Commands and other rendering control decisions can include generating per-ray priorities 540, generating ray packet priorities 542, selecting ray collections to dispatch for intersection testing 544, generating flow rate commands to scan conversion 546, and generating priority commands to a scheduler of shared computation units 548.
In more specific detail concerning examples of ray packets and tile-aware rendering control,
Rays can be represented by ray data structures that contain an identifier of a pixel to which it will contribute. Some portion of that pixelID may identify the tile. Identifiers also may one or more bits for sequence identification, in order to differentiate rays, pixels and/or tiles that belong to different frames in a sequence of frames. Of course,
In a specific example of ray intersection testing control, ray intersecting testing unit 335 can be commanded or controlled to prioritize collections that have rays associated with particular tiles. For example, many rendering algorithms may require color data for a particular pixel to be updated a number of times. In order to facilitate rapid reading, and writing of such data,
As would be apparent from the disclosure, some of the components and functionality disclosed may be implemented in hardware, software, firmware, or any combination thereof. If implemented in firmware and/or software, the functions may be stored as one or more instructions or code on a computer-readable medium, in one example, the media is non-transitory. Examples include a computer-readable medium encoded with a data structure and a computer-readable medium encoded with a computer program. Machine-readable media includes non-transitory machine readable media. Other kinds of media include transmission media. A non-transitory medium may be any tangible medium that can be accessed by a machine. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a machine. Software implementations also may involve software or firmware configuring one or more hardware elements. Where functions are described, these functions, unless stated otherwise, can be performed by a fixed function hardware element, a hardware element configured by or operating under software control, or a combination thereof. Collectively, the hardware elements (whether fixed function and/or software-controlled can be termed a module or unit for performing the function attributed thereto). A person of ordinary skill may understand a variety of implementations for such a module or unit, based on the disclosures herein. A system comprising an enumeration of such modules or units does not include software per se, although such a system may include elements that are configured with software, or which have software and/or data stored thereon.
In addition to hardware embodiments (e.g., within or coupled to a Central Processing Unit (“CPU”), microprocessor, microcontroller, digital signal processor, processor core, System on Chip (“SOC”), or any other programmable or electronic device), implementations may also be embodied in software (e.g., computer readable code, program code, instructions and/or data disposed in any form, such as source, object or machine language) disposed, for example, in a (non-transitory) computer usable (e.g., readable) medium configured to store the software. Such software can enable, for example, the function, fabrication, modeling, simulation, description, and/or testing of the apparatus and methods described herein. For example, this can be accomplished through the use of general programming languages (e.g., C, C++), GDSII databases, hardware description languages (HDL) including Verilog HDL, VHDL, SystemC Register Transfer Level (RTL) and so on, or other available programs, databases, and/or circuit (i.e., schematic) capture tools. Embodiments can be disposed in computer usable medium including non-transitory memories such as memories using semiconductor, magnetic disk, optical disk, ferrous, resistive memory, and so on.
As specific examples, it is understood that implementations of disclosed apparatuses and methods may be implemented in a semiconductor intellectual property core, such as a microprocessor core, or a portion thereof, embodied in a Hardware Description Language (HDL)), that can be used to produce a specific integrated circuit implementation. A computer readable medium may embody or store such description language data, and thus constitute an article of manufacture. A non-transitory machine readable medium is an example of computer readable media. Examples of other embodiments include computer readable media storing Register Transfer Language (RTL) description that may be adapted for use in a specific architecture or microarchitecture implementation. Additionally, the apparatus and methods described herein may be embodied as a combination of hardware and software that configures or programs hardware.
Also, in some cases terminology has been used herein because it is considered to more reasonably convey salient points to a person of ordinary skill, but such terminology should not be considered to impliedly limit a range of implementations encompassed by disclosed examples and other aspects. For example, a ray is sometimes referred to as having an origin and direction, and each of these separate items can be viewed, for understanding aspects of the disclosure, as being represented respectively as a point in 3-D space and a direction vector in 3-D space. However, any of a variety of other ways to represent a ray can be provided, while remaining within the present disclosures. For example, a ray direction also can be represented in spherical coordinates. It also would be understood that data provided in one format can be transformed or mapped into another format, while maintaining the significance of the information of the data originally represented.
Also, a number of examples have been illustrated and described in the preceding disclosure, each illustrating different aspects that can be embodied systems, methods, and computer executable instructions stored on computer readable media according to the following claims. By necessity, not every example can illustrate every aspect, and the examples do not illustrate exclusive compositions of such aspects. Instead, aspects illustrated and described with respect to one figure or example can be used or combined with aspects illustrated and described with respect to other figures. As such, a person of ordinary skill would understand from these disclosures that the above disclosure is not limiting as to constituency of embodiments according to the claims, and rather the scope of the claims define the breadth and scope of inventive embodiments herein. The summary and abstract sections may set forth one or more but not all exemplary embodiments and aspects of the invention within the scope of the claims.
Those of skill will also appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software in a computer-readable medium, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether a given portion of such functionality is implemented as dedicated or fixed function hardware or software configuring one or more hardware elements depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
The description of the aspects and features is provided to enable any person skilled in the art to make and use the systems, apparatuses and perform the methods disclosed. Various modifications will be readily apparent to those skilled in the art, and the principles described in this document may be applied to other aspects without departing from the spirit or scope of the disclosure. Thus, the description is not intended to limit the claims. Rather, the claims are to be accorded a scope consistent with the principles and novel features disclosed herein.
The drawings include relative arrangements of structure and ordering of process components, solely as an aid in understanding the description. These relative arrangements and numbering is not an implicit disclosure of any specific limitation on ordering or arrangement of elements and steps in the claims. Process limitations may be interchanged sequentially without departing from the scope of the disclosure, and means-plus-function clauses in the claims are intended to cover the structures described as performing the recited function that include not only structural equivalents, but also equivalent structures.
Although a variety of examples and other information was used to explain aspects within the scope of the appended claims, no limitation of the claims should be implied based on particular features or arrangements in such examples, as one of ordinary skill would be able to use these examples to derive a wide variety of implementations. Further and although some subject matter may have been described in language specific to examples of structural features and/or method steps, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality can be distributed differently or performed in components other than, additional to, or less than, those identified herein. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims.
This application claims priority from U.S. Provisional Patent App. No. 61/678,055, filed on Jul. 31, 2012, entitled “UNIFIED RASTERIZATION AND RAY TRACING RENDERING ENVIRONMENTS”, which is incorporated by reference in its entirety herein for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
4466061 | Desantis et al. | Aug 1984 | A |
4625289 | Rockwood | Nov 1986 | A |
4764773 | Larsen et al. | Aug 1988 | A |
5574835 | Duluk, Jr. et al. | Nov 1996 | A |
5767856 | Peterson et al. | Jun 1998 | A |
5867166 | Myhrvold et al. | Feb 1999 | A |
5968167 | Whittaker et al. | Oct 1999 | A |
6023279 | Sowizral et al. | Feb 2000 | A |
6028608 | Jenkins | Feb 2000 | A |
6073210 | Palanca et al. | Jun 2000 | A |
6105127 | Kimura et al. | Aug 2000 | A |
6111582 | Jenkins | Aug 2000 | A |
6323860 | Ming et al. | Nov 2001 | B1 |
6380935 | Heeschen et al. | Apr 2002 | B1 |
6556200 | Pfister et al. | Apr 2003 | B1 |
6593929 | Van Hook et al. | Jul 2003 | B2 |
6631419 | Greene | Oct 2003 | B1 |
6731304 | Sowizral et al. | May 2004 | B2 |
6856320 | Rubinstein et al. | Feb 2005 | B1 |
6897871 | Morein et al. | May 2005 | B1 |
RE39278 | Yukitake et al. | Sep 2006 | E |
7289118 | Schmittler et al. | Oct 2007 | B2 |
7310100 | Hussain | Dec 2007 | B2 |
7324115 | Fraser | Jan 2008 | B2 |
7327369 | Morein et al. | Feb 2008 | B2 |
7333107 | Papageorgiou | Feb 2008 | B2 |
7348975 | Reshetov et al. | Mar 2008 | B2 |
7362332 | Gritz | Apr 2008 | B2 |
7405734 | Foran | Jul 2008 | B2 |
7479962 | Herken | Jan 2009 | B2 |
7483024 | Maillot | Jan 2009 | B2 |
7688320 | Shearer | Mar 2010 | B2 |
7742053 | Lefebvre et al. | Jun 2010 | B2 |
7782318 | Shearer | Aug 2010 | B2 |
7830379 | Peterson et al. | Nov 2010 | B2 |
7834872 | Fenney et al. | Nov 2010 | B2 |
7881755 | Mishra et al. | Feb 2011 | B1 |
8018457 | Peterson et al. | Sep 2011 | B2 |
8046761 | Howson | Oct 2011 | B2 |
8059123 | Laine et al. | Nov 2011 | B1 |
8065288 | Garland et al. | Nov 2011 | B1 |
8115763 | Woop et al. | Feb 2012 | B2 |
8174531 | Lindholm et al. | May 2012 | B1 |
8188996 | Dammertz et al. | May 2012 | B2 |
8405665 | Lindholm et al. | Mar 2013 | B2 |
8670483 | Morphet et al. | Mar 2014 | B2 |
9424685 | Howson et al. | Aug 2016 | B2 |
10217266 | Howson et al. | Feb 2019 | B2 |
10909745 | Howson | Feb 2021 | B2 |
20020039100 | Morphet | Apr 2002 | A1 |
20030120886 | Moller et al. | Jun 2003 | A1 |
20040138953 | Van Luchene et al. | Jul 2004 | A1 |
20040233207 | Morphet | Nov 2004 | A1 |
20050264568 | Keller | Dec 2005 | A1 |
20060053189 | Mantor | Mar 2006 | A1 |
20060132350 | Reshetov | Jun 2006 | A1 |
20070132754 | Reshetov et al. | Jun 2007 | A1 |
20070132772 | Morphet | Jun 2007 | A1 |
20070146378 | Sorgard et al. | Jun 2007 | A1 |
20070182732 | Woop et al. | Aug 2007 | A1 |
20080211804 | Hempel et al. | Sep 2008 | A1 |
20090322752 | Peterson et al. | Dec 2009 | A1 |
20100053162 | Dammertz et al. | Mar 2010 | A1 |
20110043521 | Smyth | Feb 2011 | A1 |
20110170756 | Schneider | Jul 2011 | A1 |
20130033507 | Kirill et al. | Feb 2013 | A1 |
Entry |
---|
“Razor: An Architecture for Dynamic Multiresolution Ray Tracing” Peter Djeu et. al. University of Texas at Austin Deparlment of Computer Sciences, Technical Report #07-52 Jan. 24, 2007. |
Budge Out-of-core Data Management for Path Tracing on Hybrid Resources Eurographics vol. 28, No. 2 (2009). |
C. Benthin, I. Wald, M. Scherbaum and H. Friedrich, “Ray Tracing on the Cell Processor,” IEEE Symposium on Interactive Ray Tracing 2006, Sep. 18-20, 2006, pp. 15-23, Salt Lake City, UT. |
Geoff Wyvill, “Practical Ray Tracing,” Computer Graphics International 1995, Tutorial notes. |
H. Du, M. Sanchez-Elez, N. Tabrizi, N. Bagherzadeh, M.L. Anido and M. Fernandez, “Interactive Ray Tracing on Reconfigurabie SIMD MorphoSys,” Proceedings of the Design, Automation and Test in Europe Conference and Exhibition, 2003, Asia and South Pacific Jan. 21-24, 2003, pp. 471-476. |
Horiguchi, S., Katahira, M., Nakada, T., Parallel processing of incremental ray tracing on a shared-memory multiprocessor, 1993, The Visual Computer, vol. 9, No. 7, pp. 371-380. |
I. Wald, P. Slusaliek and C. Benthin, “Interactive Distributed Ray Tracing of Highly Complex Models,” Rendering Techniques 2001—Proceedings of the 12th EUROPGRAPHICS Workshop on Render, pp. 274-285, London, England, Jun. 2001. |
I. Wald, P. P Slusallek, C. Benthin and M. Wagner, “Interactive Rendering with Coherent Ray Tracing,” Computer Graphics Forum, Proceedings of EUROGRAPHICS 2001, vol. 20, No. 3, 2001. |
J - G- Cleary, B.M. Wyvill, G.M. Birtwistie and R. Vatli, “Multiprocessor Ray Tracing,” Computer Graphics Forum, vol. 5, issue 1, pp. 3-12, 1986. |
James Arvo and David Kirk, “Fast Ray Tracing by Ray Classification,” ACM SIGGRAPH Computer Graphics 21 (4), Jul. 1987, pp. 55-64. |
James Bigler, Abe Stephens and Steven G. Parker, “Design for Parallel Interactive Ray Tracing Systems,” Proceedings of the IEEE Symposium on Interactive Ray Tracing, 2006, pp. 187-196. |
Jorg Schmittler, Ingo Wald, and Philipp Slusallek, “SaarCOR—A Hardware Architecture for Ray Tracing,” Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, Saarbrucken, Germany, Session: Ray tracing vs. scan conversion, pp. 27-36, 2002. |
Kaeriyama Y et al: “Multi-core data streaming architecture for ray tracing”, Computer Design, 2007. ICCD 2007. 25th International Conference On, IEEE, Piscataway, NJ, USA, Oct. 7, 2007 (Oct. 7, 2007), pp. 171-178, XP031308348, ISBN: 978-1-4244-1257-0. |
M. Sanchez-Eiez, H. Du, N. Tabrizi, Y. Long, N. Bagherzadeh and M. Fernandez, “Algorithm Optimizations and Mapping Scheme for Interactive Ray Tracing on a Reconfigurable Architecture,” Computers & Graphics 27(5), 2003, pp. 701-713. |
Martin Christen, “Ray Tracing on GPU,” Master's thesis, Univ. of Applied Sciences Basel (FHBB), Jan. 19, 2005 (Available online at http://gpurt.sourceforge.net/DA07.sub.-0405.sub.-Ray.sub.-Tracing.sub-on.sub.-GPU-1.0.5.pdf, last visited Dec. 10, 2009). |
P. H.Christensen, J. Fong, D. M. Laur and Dana Batali, “Ray Tracing for the Movie ‘Cars’,” IEEE Symposium on Interactive Ray Tracing, 2006, pp. 1-6. |
Parker, Steven G., et al. “Optix: a general purpose ray tracing engine.” ACM Transactions on Graphics (TOG). vol. 29. No. 4. ACM, 2010. |
Purcell et al.; Ray Tracing on Programmable Graphics Hardware; ACM Trans. Graph. 21 (3) pp. 703-712; Jul. 2002. |
Reinhard, Erik, Alan Chalmers, and Frederik W. Jansen. “Hybrid scheduling for parallel rendering using coherent ray tasks.” Proceedings of the 1999 IEEE symposium on Parallel visualization and graphics. IEEE Computer Society, 1999. |
Spjut “TRaX: A Multi-Threaded Architecture for Real-Time Ray Tracing” Application Specific Processors, 2008. SASP 2008. pp. 108-114. |
Stamminger “Walkthroughs with Corrective Texturing” (2000) available at http://www.mpi-sb.mpg.de. |
Sugerman, “GRAMPS: A Programming Model for Graphics Pipelines”, ACM Transactions on Graphics, vol. 28, No. 1, Article 4, Publication date: Jan. 2009. |
Sven Woop, Jorg Schmittler and Philipp Slusallek, “RPU: A Programmable Ray Processing Unit for Realtime Ray Tracing,” ACM Transactions on Graphics (TOG), vol. 24, Issue 3, (Jul. 2005), Proceedings of ACM SIGGRAPH 2005, session: Hardware rendering, pp. 434-444, 2005. |
W.R. Mark and D. Fussell, “Real-Time Rendering Systems in 2010,” The University of Texas at Austin, Department of Computer Sciences, Technical Report #TR-05-18, May 2, 2005. (Available at http://www-csl.csres.utexas.edu/users)billmark/papers/rendering2010-TR/TR- 05-18-Rendering2010.pdf, last visited Jan. 7, 2008.). |
Wald et al; State of the Art in Interactive Ray Tracing; Eurographics'01; ACM 2001. |
(**NOTE**—NPL in parent applications). |
Number | Date | Country | |
---|---|---|---|
20210134047 A1 | May 2021 | US |
Number | Date | Country | |
---|---|---|---|
61678055 | Jul 2012 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16248421 | Jan 2019 | US |
Child | 17146226 | US | |
Parent | 15174811 | Jun 2016 | US |
Child | 16248421 | US | |
Parent | 13953754 | Jul 2013 | US |
Child | 15174811 | US |