"Nerve-Damage"
Regular
Statistical rendering acceleration
Someone care to explain some of this in laymen terms.
Different rendering techniques are selected for portions of a scene based on statistical estimates of the portions' rendering costs. A scene is partitioned into a bounding volume hierarchy. Each bounding volume includes a statistical model of the spatial distribution of geometric primitives within the bounding volume. An image to be rendered is partitioned into screen regions and each screen region is associated with one or more bounding volumes and their statistical models. The associated statistical models of a screen region are evaluated to estimate the rendering cost, such as the probable number of geometric primitives per pixel, for the screen region. Based on the rendering cost, the screen region is assigned to a dense geometry renderer, such as a ray tracing renderer, or a sparse geometry renderer, such as a rasterization renderer. Rendered screen regions are combined to form a rendered image.
BACKGROUND OF THE INVENTION
[0001] The present invention relates to the field of computer graphics. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. There are many different types of rendering techniques, each with their advantages and disadvantages. Among these rendering techniques are ray tracing and rasterization.
[0002] Rasterization typically transforms the geometry of a three-dimensional scene into a coordinate system associated with a specific viewpoint and applies scan conversion to the transformed geometry to create sets of pixels forming all or part of a rendered image. Rasterization techniques typically apply clipping algorithms to determine a subset of the geometry of a scene that are potentially visible from the viewpoint. Then, rasterization techniques scan convert each of the set of potentially visible geometry in a scene to create a rendered image. The computational cost of rasterization techniques depends primarily on the geometric complexity of the scene, such as the number of potentially visible geometric primitives, rather than the number of pixels covered by the scene geometry. For this reason, rasterization techniques are generally used for real-time rendering, as they can render a large number of pixels with minimal additional computational cost. By limiting the geometric complexity of scenes, rasterization can render high-resolution images at frame rates suitable for interactive applications.
[0003] Ray tracing typically follows the path of a ray of light through a three dimensional scene to calculate attributes such as the absorption, reflection, and/or refraction of the ray. Typically, ray tracing calculates the attributes of at least one ray for each pixel in the rendered image. However, the computation time for each ray is somewhat independent of the geometric complexity of the three dimensional scene. As a result, the computational cost of ray tracing depends primarily on the number of pixels to be rendered, rather than the complexity of the scene. At typical image resolutions, the computational cost of rendering images using ray tracing is typically much greater than that from rasterization, making real-time ray tracing difficult or impossible with currently available graphics hardware and software.
[0004] There is strong demand for improved visual quality and fidelity in real-time computer graphics. To meet this demand, application developers are creating content that includes a larger number of geometric primitives. The increased number of geometric primitives are typically used to represent objects with finer levels of detail. Thus, as geometric complexity of a scene increases, the average size of geometric primitives typically decreases. For example, a character model may have a large number of small (often sub-pixel size) triangles representing each strand of its hair. Unfortunately, rasterization is often inefficient for rendering a large number of geometric primitives, especially when the geometric primitives cover a relatively small number of pixels. In these cases, rendering techniques, such as ray tracing, are often more efficient.
[0005] It is therefore desirable for a system and method to efficiently render a large number of geometric primitives by selecting the most appropriate rendering techniques for different portions of the scene to be rendered. It is further desirable that the system and method be capable of dynamically selecting the most appropriate rendering technique for geometric primitives based upon the viewpoint used for rendering and other parameters. It is also desirable for the system and method to incur minimal processing overhead in determining the most appropriate rendering technique to apply to one or more primitives. Additionally, it is desirable to be able to implement all or portions of the system and method in software and/or in dedicated hardware.
BRIEF SUMMARY OF THE INVENTION
[0006] An embodiment of the invention selects different rendering techniques for portions of a scene based on a statistical estimate of the rendering cost for each portion. A scene is partitioned into a bounding volume hierarchy. For each bounding volume, a statistical model of the spatial distribution of geometric primitives within the bounding volume is created. An image to be rendered is partitioned into screen regions and each screen region is associated with one or more bounding volumes and their statistical models. The associated statistical models of a screen region are evaluated to estimate the rendering cost, such as the probable number of geometric primitives per pixel, for the screen region. Based on the rendering cost, the screen region is assigned to a dense geometry renderer, such as a ray tracing renderer, or a sparse geometry renderer, such as a rasterization renderer. Rendered screen regions are combined to form a rendered image.
[0007] In an embodiment, a method of rendering at least a portion of an image of a scene includes creating a bounding volume enclosing at least a portion of the geometric primitives of the scene and creating a statistical model for the bounding volume. The statistical model represents a spatial distribution of the geometric primitives within the bounding volume. The method defines a screen region of the image, estimates a rendering cost of the screen region from at least the statistical model of the associated bounding volume, and selects one of at least two different renderers to render the geometric primitives enclosed by the bounding volume based on the rendering cost.
[0008] In an embodiment, estimating a rendering cost of the screen region includes projecting the statistical model into a view space associated with the image, determining a probability value that represents the probability the pixel is covered by at least one geometric primitive enclosed by the bounding volume using the projected statistical model for each of at least a portion of the set of pixels of the screen region, and evaluating the probability values of the portion of the set of pixels to determine the rendering cost in terms of a probable number of geometric primitives per pixel for the screen region. The statistical model can be projected using an orthographic or perspective transformation. The statistical model can include a mean position and/or size of the geometric primitives enclosed by the bounding volume. The statistical model can also include at least one standard deviation in position of the geometric primitives enclosed by the bounding volume. To create the statistical model, geometric primitives can be represented by a set of rotational or non-rotational invariant representative objects. Statistical attributes can then be determined from the set of representative objects.
[0055] FIG. 5 illustrates an example computer system suitable for implementing an embodiment of the invention. FIG. 5 is a block diagram of a computer system 1000, such as a personal computer, video game console, personal digital assistant, or other digital device, suitable for practicing an embodiment of the invention. Computer system 1000 includes a central processing unit (CPU) 1005 for running software applications and optionally an operating system. CPU 1005 may be comprised of one or more processing cores. Memory 1010 stores applications and data for use by the CPU 1005. Storage 1015 provides non-volatile storage for applications and data and may include fixed disk drives, removable disk drives, flash memory devices, and CD-ROM, DVD-ROM, Blu-ray, HD-DVD, or other optical storage devices. User input devices 1020 communicate user inputs from one or more users to the computer system 1000, examples of which may include keyboards, mice, joysticks, touch pads, touch screens, still or video cameras, and/or microphones. Network interface 1025 allows computer system 1000 to communicate with other computer systems via an electronic communications network, and may include wired or wireless communication over local area networks and wide area networks such as the Internet. An audio processor 1055 is adapted to generate analog or digital audio output from instructions and/or data provided by the CPU 1005, memory 1010, and/or storage 1015. The components of computer system 1000, including CPU 1005, memory 1010, data storage 1015, user input devices 1020, network interface 1025, and audio processor 1055 are connected via one or more data buses 1060.
[0056] A graphics subsystem 1030 is further connected with data bus 1060 and the components of the computer system 1000. The graphics subsystem 1030 includes a graphics processing unit (GPU) 1035 and graphics memory 1040. Graphics memory 1040 includes a display memory (e.g., a frame buffer) used for storing pixel data for each pixel of an output image. Graphics memory 1040 can be integrated in the same device as GPU 1035, connected as a separate device with GPU 1035, and/or implemented within memory 1010. Pixel data can be provided to graphics memory 1040 directly from the CPU 1005. Alternatively, CPU 1005 provides the GPU 1035 with data and/or instructions defining the desired output images, from which the GPU 1035 generates the pixel data of one or more output images. The data and/or instructions defining the desired output images can be stored in memory 1010 and/or graphics memory 1040. In an embodiment, the GPU 1035 includes 3D rendering capabilities for generating pixel data for output images from instructions and data defining the geometry, lighting, shading, texturing, motion, and/or camera parameters for a scene. The GPU 1035 can further include one or more programmable execution units capable of executing shader programs.
Someone care to explain some of this in laymen terms.