|
|
| HIGH DEFINiTION GAMING |
|
SMOOTHVISION HD Anti-Aliasing SMOOTHVISION HD offers the fastest, highest quality, and most flexible anti-aliasing implementation available in a consumer product. It uses a multi-sample algorithm with 2, 4, or 6 samples per pixel and a programmable jitter table for custom sample patterns. This allows for sparse sample patterns that are not limited to a grid arrangement, and can therefore provide better quality per sample. The default sample patterns are the result of extensive testing and experimentation. Along with the new techniques described below, they provide anti-aliasing that looks clearly superior to competing solutions, even those that claim to use more samples per pixel. Click to
enlarge 11: Anti-aliasing image quality comparison. (Screenshots taken from Unreal Tournament 2004) SMOOTHVISION HD anti-aliasing takes full advantage of the HYPER Z HD technology in the RADEON X800 series VPUs to provide unprecedented performance at high resolutions. It makes use of the lossless compression capability to compress the sampled Color & Z values for each pixel. Since the compression ratio ranges from 2:1 to 6:1 for color values, and from 2:1 to 8:1 for Z values, 2x multi-sample anti-aliasing is practically free from a performance standpoint, and even 4x mode can often be enabled with a relatively small impact on frame rates. Temporal Anti-Aliasing With the incredible performance of the RADEON X800 series of VPUs, it is not uncommon to see games running at frame rates that match or exceed the refresh rate of the display device (typically 50-60 frames per second for LCDs, and 70-85 frames per second for CRTs), even at high resolutions with anti-aliasing and anisotropic filtering enabled. Since the displays cannot update any faster than this, the additional frames provide little or no benefit to image quality. Temporal Anti-Aliasing is a new technique that uses the programmable sample pattern capability of SMOOTHVISION HD to improve image quality in these cases. It works by alternating between two different pre-defined sample patterns every frame. This causes a slight fluctuation in the colors of anti-aliased edges that is visible at low frame rates. However, as the frame rate approaches the display refresh rate, the persistence of the display causes the results of the two sample patterns to combine into a single result. This produces an image that appears to have twice as many samples per pixel as it actually does, providing a significant image quality benefit with no performance impact. The effect is particularly striking with 2x temporal MSAA, where the resulting image is virtually indistinguishable from standard 4x MSAA yet runs much faster.
Temporal Anti-Aliasing
Temporal anti-aliasing works anywhere that standard MSAA can be used. In order to avoid the flickering artifacts that can occur at lower frame rates, it can be temporarily disabled by the driver if the frame rate drops below a defined threshold, and re-enabled when they climb back above it. In this case, the display would revert to standard MSAA. Gamma Correction SMOOTHVISION HD anti-aliasing further enhances pixel quality by using a patented gamma correction technique. Gamma correction is a widely used method that compensates for the fact that most displays have a non-linear response characteristic. In other words, if you send a pixel with a brightness of “2” to a display, that pixel won’t necessarily be twice as bright as a pixel with a brightness of “1”. The actual relationship is defined by a gamma curve, which can vary from display to display. Most games and other 3D applications today provide a “Brightness” setting that allows you to calibrate the image to the characteristics of your display as well as local lighting conditions. Setting the value too high results in a washed-out image, while setting it too low results in an image that is too dark to see. What this “Brightness” setting is actually doing is adjusting gamma at the application level. One of the results of anti-aliasing is to provide smooth gradients on lines and edges that would otherwise appear jagged and broken. However, creating a gradient that appears smooth and even to the human eye requires that gamma be taken into account. SMOOTHVISION HD anti-aliasing applies a gamma curve to the sample values when they are blended together to determine the final color of each pixel. This patented technique results in visibly superior edge and line anti-aliasing.
Anti-Alias Sample Gamma Correction Texture Filtering Most of the surfaces you see in a 3D image will have some form of texture applied to them. A texture is composed of a set of values (usually two-dimensional) called texels. It is typically placed like a decal across the polygons that make up each visible surface. The base color of each pixel is determined by sampling points in the texture that correspond to the center of each pixel on the screen. In some cases multiple textures can be layered on a single surface, in order to achieve effects like transparency, bump mapping, reflections, etc. Of course, it would be ideal if every texture had infinite resolution, but since this would require an infinite amount of memory and data storage, texture resolution must be limited. This means that if you zoom in close enough to a textured surface, it will become more and more pixelated. It also means that if you look at the surface from far away, details in the texture will randomly appear and disappear, producing a distracting shimmering effect. Since texture resolution is completely independent of display resolution, increasing the resolution of your monitor will not help image quality in these situations. There are a few different techniques that can be used to alleviate texture artifacts. One common method is to use mip-maps, which are multiple copies of the same texture at progressively lower resolutions. Mip-maps are usually pre-filtered to look as good as possible when viewed at a particular distance. By switching texture mip-map levels according to the distance from a surface, it is possible to remove most of the shimmering artifacts described above. However, mip-maps don’t address the issue of pixelation when textures are magnified. Lossless texture compression techniques can alleviate this problem somewhat by allowing higher resolution textures to be used, but there will always be cases where the resolution is insufficient. The most general solution to the texture resolution problem is the same one used in anti-aliasing, that is, to take multiple texture samples for each pixel and blend the values together. Known as texture filtering, this set of techniques increases the effective texture sample rate and provides the appearance of greater texture resolution than what actually exists. Also like anti-aliasing, the trade-off is that more texture samples require more memory bandwidth, which is a common performance bottleneck in graphics processors. The simplest and easiest form of texture filtering is bilinear filtering. Instead of sampling the single texel closest to the center of the pixel being drawn, bilinear filtering samples the nearest four texels and does a weighted blend of the values. While this reduces pixelation, it replaces it with blurriness that sometimes looks only marginally better, especially on surfaces that are sharply angled relative to the viewer (such as most walls and floors). Bilinear filtering works best in conjunction with mip-maps, but this introduces another artifact – obvious mip-map boundaries where the texture steps from sharp to blurry. Trilinear filtering works similarly to bilinear filtering, but it addresses the mip-map boundary artifacts by taking bilinear samples from the two nearest mip-map levels (8 texture samples in total per pixel). The resulting textures appear to smoothly fade from sharp to blurry as they stretch away from the viewer. Trilinear filtering does not do anything, however, to make textures appear less blurry. Anisotropic filtering is a technique designed to sharpen the textures that appear on 3D surfaces. It works by taking multiple bi-linear or tri-linear texture samples for each rendered pixel, which prevents the blurriness that normally results from textures rendered at sharp angles relative to the viewer. The reason these textures appear blurry is because a single pixel on an angled surface covers a large amount of surface area relative to a pixel on a surface viewed straight on. This means that many more texels will lie in the vicinity of the pixel center, and their values need to be taken into account to accurately determine the pixel color. Rather than just sampling the nearest texels to the pixel center, anisotropic filtering takes additional samples along the slope of the surface. The more strongly sloped the surface is, the more samples will be necessary to maintain image fidelity. In general, 16 samples are sufficient to eliminate any visible blurriness on even the most extremely angled surfaces.
A comparison of texture filtering methods. The images at the top show a mip-mapped texture rendered with each method. Mip-map boundaries are visible as discontinuities running horizontally across the middle of the two leftmost images. The diagrams below the images illustrate how the textures are sampled in each case. Two mip-map levels are shown for each texture.
SMOOTHVISION HD Anisotropic Filtering SMOOTHVISION HD anisotropic filtering supports 2, 4, 8, or 16 texture samples per pixel. Each setting can be used in a performance mode that uses bilinear samples, or a quality mode that uses trilinear samples. There is also a new capability to support intermediate modes, to help strike ideal balance between performance and quality. All modes use an adaptive algorithm that calculates the slope of each polygon to determine optimal number of texture samples. This ensures that multiple texture samples are only taken from the parts of an image that would actually benefit, providing improved performance with maximum image quality. SMOOTHVISION HD uses a more intelligent algorithm than previous products, allowing even greater increases in anisotropic filtering speed without visibly changine the image.
SMOOTHVISION HD anisotropic filtering (quality mode) in action. The surface is on a steep angle and the texture consists of the letters of the alphabet. Note how it becomes easier to make out fine details as the level of anisotropic filtering is increased. HYPER Z HD HYPER Z HD includes a number of different technologies aimed at optimizing memory bandwidth efficiency, particularly with respect to Z-buffer operations. These technologies play a pivotal role in allowing the RADEON X800 series VPUs to reach unprecedented levels of rendering performance. To render a 3D image properly, it is necessary to know the distance of every rendered object from the viewpoint. This distance is stored in a special buffer called a Z-Buffer or Depth Buffer, and is used to determine which objects should be drawn in front of other objects. Reading and updating the Z-Buffer typically consumes more memory bandwidth than any other part of the 3D rendering process, making it a major performance bottleneck. The goal of HYPER Z technology is to reduce the memory bandwidth consumed by the Z-Buffer, thereby increasing performance. Hierarchical Z and Early Z Test The first component of HYPER Z is called Hierarchical Z. This technique subdivides the Z-Buffer into blocks of pixels, which can be rapidly checked to see if they will be visible in the final image. If the entire block will be hidden, it is discarded and the renderer moves on to the next block. If some portions of the block will be visible, it is subdivided into smaller blocks and the process is repeated. While Hierarchical Z can usually catch and discard most of the occluded pixels in an image, the fact that it operates on blocks of pixels means that some will always be able to slip through. These pixels must then pass all the way through the rendering engine before a final Z test is performed and they are discarded. The Early Z Test feature uses a sophisticated algorithm to test the visibility of individual pixels before they are sent to the rendering engine, effectively eliminating overdraw and maximizing rendering efficiency. Hierarchical Z-buffering requires fast, dedicated on-chip memory to work well. With HYPER Z HD, the RADEON X800 architecture includes enough of this memory to enable full Hierarchical Z at the highest possible display resolutions. Z Compression and Fast Z Clear A lossless algorithm is used to compress data being written into the Z-Buffer, and to decompress data being read out. HYPER Z HD introduces an improved algorithm that can achieve up to 8:1 compression, compared with 4:1 on earlier products. A minimum compression ratio of 2:1 can be achieved in all circumstances. The compression technique is designed to work particularly well with anti-aliasing. With 6x MSAA, the compression ratio can be as high as 48:1. This characteristic is vital to the anti-aliasing performance of the RADEON X800 series. An added benefit of this Z compression technology is the ability to do fast Z clears, a technique that rapidly clears the Z-buffer in between rendered frames. This process becomes particularly important at higher resolutions. For example, at 1600x1200 resolution, approximately 7.7 MB of data must be written to the Z-buffer every frame just to clear it. HYPER Z HD technology requires just 1/64 this amount of data to clear the Z-buffer, providing dramatically improved performance at higher resolutions. Z/Stencil Cache Since most 3D rendering requires every pixel to be depth tested before being displayed, fast read and write access to the Z-buffer is crucial. This can be problematic because the Z-buffer is too large to store completely on the chip, and must instead be placed in local graphics memory. Since the interface to this memory must be shared with many other parts of the chip, latency can be a major problem. Stencil tests can cause similar issues. Primarily used for shadow volume rendering, the stencil buffer may have to be accessed multiple times for every pixel that gets displayed in some complex scenes. Because it is used in ways similar to the Z-buffer, stencil and Z data are often stored together in a single combined buffer. These issues are dealt with in the RADEON X800 architecture by caching Z-buffer and stencil buffer data on the chip. Intelligent algorithms must be used to ensure that this cache is kept constantly up to date. However, different rendering modes tend to access the Z-buffer in different ways. For example, multi-sample anti-aliasing modes require different Z-buffer access patterns than standard rendering, and stencil shadow volume rendering has its own unique access patterns. HYPER Z HD adds a range of new tunable parameters to the Z-cache to allow it to perform optimally for each different mode, thereby increasing memory bandwidth efficiency and overall performance.
Next: 3DC
|