High-dynamic-range rendering

From Wikipedia, the free encyclopedia
Jump to: navigation, search
A comparison of the standard fixed-aperture rendering (left) with the HDR rendering (right) in the video game Half-Life 2: Lost Coast

High-dynamic-range rendering (HDRR or HDR rendering), also known as high-dynamic-range lighting, is the rendering of computer graphics scenes by using lighting calculations done in a larger dynamic range. This allows preservation of details that may be lost due to limiting contrast ratios. Video games and computer-generated movies and special effects benefit from this as it creates more realistic scenes than with the more simplistic lighting models used.

Graphics processor company Nvidia summarizes the motivation for HDRR in three points: bright things can be really bright, dark things can be really dark, and details can be seen in both.[1]

History[edit]

The use of high-dynamic-range imaging (HDRI) in computer graphics was introduced by Greg Ward in 1985 with his open-source Radiance rendering and lighting simulation software which created the first file format to retain a high-dynamic-range image. HDRI languished for more than a decade, held back by limited computing power, storage, and capture methods. Not until recently has the technology to put HDRI into practical use been developed.[2][3]

In 1990, Nakame, et al., presented a lighting model for driving simulators that highlighted the need for high-dynamic-range processing in realistic simulations.[4]

In 1995, Greg Spencer presented Physically-based glare effects for digital images at SIGGRAPH, providing a quantitative model for flare and blooming in the human eye.[5]

In 1997 Paul Debevec presented Recovering high dynamic range radiance maps from photographs[6] at SIGGRAPH and the following year presented Rendering synthetic objects into real scenes.[7] These two papers laid the framework for creating HDR light probes of a location and then using this probe to light a rendered scene.

HDRI and HDRL (high-dynamic-range image-based lighting) have, ever since, been used in many situations in 3D scenes in which inserting a 3D object into a real environment requires the lightprobe data to provide realistic lighting solutions.

In gaming applications, Riven: The Sequel to Myst in 1997 used an HDRI postprocessing shader directly based on Spencer's paper.[8] After 2003, Valve Software released a demo movie of their Source engine rendering a cityscape in a high dynamic range.[9] The term was not commonly used again until E³ 2004, where it gained much more attention when Valve Software announced Half-Life 2: Lost Coast and Epic Games showcased Unreal Engine 3, coupled with open-source engines such as OGRE 3D and open-source games like Nexuiz.

Examples[edit]

One of the primary advantages of HDR rendering is that details in a scene with a large contrast ratio are preserved. Without HDR, areas that are too dark are clipped to black and areas that are too bright are clipped to white. These are represented by the hardware as a floating point value of 0.0 and 1.0 for pure black and pure white, respectively.

Another aspect of HDR rendering is the addition of perceptual cues which increase apparent brightness. HDR rendering also affects how light is preserved in optical phenomena such as reflections and refractions, as well as transparent materials such as glass. In LDR rendering, very bright light sources in a scene (such as the sun) are capped at 1.0. When this light is reflected the result must then be less than or equal to 1.0. However, in HDR rendering, very bright light sources can exceed the 1.0 brightness to simulate their actual values. This allows reflections off surfaces to maintain realistic brightness for bright light sources.

Limitations and compensations[edit]

Human eye[edit]

The human eye can perceive scenes with a very high dynamic contrast ratio, around 1,000,000:1. Adaptation is achieved in part through adjustments of the iris and slow chemical changes, which take some time (e.g. the delay in being able to see when switching from bright lighting to pitch darkness). At any given time, the eye's static range is smaller, around 10,000:1. However, this is still higher than the static range of most display technology.[citation needed]

Output to displays[edit]

Although many manufacturers claim very high numbers, plasma displays, LCD displays, and CRT displays can only deliver a fraction of the contrast ratio found in the real world, and these are usually measured under ideal conditions. The simultaneous contrast of real content under normal viewing conditions is significantly lower.

Some increase in dynamic range in LCD monitors can be achieved by automatically reducing the backlight for dark scenes (LG calls it Digital Fine Contrast, Samsung are quoting "dynamic contrast ratio"), or having an array of brighter and darker LED backlights (BrightSide Technologies – now part of Dolby, and Samsung in development).

Light bloom[edit]

Main article: Bloom (shader effect)

Light blooming is the result of scattering in the human lens, which our brain interprets as a bright spot in a scene. For example, a bright light in the background will appear to bleed over onto objects in the foreground. This can be used to create an illusion to make the bright spot appear to be brighter than it really is.[5]

Flare[edit]

Main article: Lens flare

Flare is the diffraction of light in the human lens, resulting in "rays" of light emanating from small light sources, and can also result in some chromatic effects. It is most visible on point light sources because of their small visual angle.[5]

Otherwise, HDR rendering systems have to map the full dynamic range to what the eye would see in the rendered situation onto the capabilities of the device. This tone mapping is done relative to what the virtual scene camera sees, combined with several full screen effects, e.g. to simulate dust in the air which is lit by direct sunlight in a dark cavern, or the scattering in the eye.

Tone mapping and blooming shaders can be used together to help simulate these effects.

Tone mapping[edit]

Main article: Tone mapping

Tone mapping, in the context of graphics rendering, is a technique used to map colors from high dynamic range (in which lighting calculations are performed) to a lower dynamic range that matches the capabilities of the desired display device. Typically, the mapping is non-linear – it preserves enough range for dark colors and gradually limits the dynamic range for bright colors. This technique often produces visually appealing images with good overall detail and contrast. Various tone mapping operators exist, ranging from simple real-time methods used in computer games to more sophisticated techniques that attempt to imitate the perceptual response of the human visual system.

Applications in computer entertainment[edit]

Currently HDRR has been prevalent in games, primarily for PCs, Microsoft's Xbox 360, and Sony's PlayStation 3. It has also been simulated on the PlayStation 2, GameCube, Xbox and Amiga systems. Sproing Interactive Media has announced that their new Athena game engine for the Wii will support HDRR, adding Wii to the list of systems that support it.

In desktop publishing and gaming, color values are often processed several times over. As this includes multiplication and division (which can accumulate rounding errors), it is useful to have the extended accuracy and range of 16 bit integer or 16 bit floating point formats. This is useful irrespective of the aforementioned limitations in some hardware.

Development of HDRR through DirectX[edit]

Complex shader effects began their days with the release of Shader Model 1.0 with DirectX 8. Shader Model 1.0 illuminated 3D worlds with what is called standard lighting. Standard lighting, however, had two problems:

  1. Lighting precision was confined to 8 bit integers, which limited the contrast ratio to 256:1. Using the HVS color model, the value (V), or brightness of a color has a range of 0 – 255. This means the brightest white (a value of 255) is only 255 levels brighter than the darkest shade above pure black (i.e.: value of 0).
  2. Lighting calculations were integer based, which didn't offer as much accuracy because the real world is not confined to whole numbers.

On December 24, 2002, Microsoft released a new version of DirectX. DirectX 9.0 introduced Shader Model 2.0, which offered one of the necessary components to enable rendering of high-dynamic-range images: lighting precision was not limited to just 8-bits. Although 8-bits was the minimum in applications, programmers could choose up to a maximum of 24 bits for lighting precision. However, all calculations were still integer-based. One of the first graphics cards to support DirectX 9.0 natively was ATI's Radeon 9700, though the effect wasn't programmed into games for years afterwards. On August 23, 2003, Microsoft updated DirectX to DirectX 9.0b, which enabled the Pixel Shader 2.x (Extended) profile for ATI's Radeon X series and NVIDIA's GeForce FX series of graphics processing units.

On August 9, 2004, Microsoft updated DirectX once more to DirectX 9.0c. This also exposed the Shader Model 3.0 profile for high-level shader language (HLSL). Shader Model 3.0's lighting precision has a minimum of 32 bits as opposed to 2.0's 8-bit minimum. Also all lighting-precision calculations are now floating-point based. NVIDIA states that contrast ratios using Shader Model 3.0 can be as high as 65535:1 using 32-bit lighting precision. At first, HDRR was only possible on video cards capable of Shader-Model-3.0 effects, but software developers soon added compatibility for Shader Model 2.0. As a side note, when referred to as Shader Model 3.0 HDR, HDRR is really done by FP16 blending. FP16 blending is not part of Shader Model 3.0, but is supported mostly by cards also capable of Shader Model 3.0 (exceptions include the GeForce 6200 series). FP16 blending can be used as a faster way to render HDR in video games.

Shader Model 4.0 is a feature of DirectX 10, which has been released with Windows Vista. Shader Model 4.0 allows 128-bit HDR rendering, as opposed to 64-bit HDR in Shader Model 3.0 (although this is theoretically possible under Shader Model 3.0).

Shader Model 5.0 is a feature in DirectX 11, On Windows Vista and Windows 7, it allows 6:1 compression of HDR textures, without noticeable loss, which is prevalent on previous versions of DirectX HDR texture compression techniques.

Development of HDRR through OpenGL[edit]

It is possible to develop HDRR through GLSL shader starting from OpenGL 1.4 onwards.

GPUs that support HDRR[edit]

This is a list of graphics processing units that may or can support HDRR. It is implied that because the minimum requirement for HDR rendering is either Shader Model 2.0 or GLSL 1.10, any graphics card that supports Shader Model 2.0 or GLSL 1.10 can do HDR rendering. However, HDRR may greatly impact the performance of the software using it if the device is not sufficiently powerful.

GPUs designed for games

Shader Model 2 Compliant (Includes versions 2.0, 2.0a and 2.0b)
From ATI R300 series: 9500, 9500 Pro, 9550, 9550 SE, 9600, 9600 SE, 9600 TX, 9600 AIW, 9600 Pro, 9600 XT, 9650, 9700, 9700 AIW, 9700 Pro, 9800, 9800 SE, 9800 AIW, 9800 Pro, 9800XT, X300, X300 SE, X550, X600 AIW, X600 Pro, X600 XT

R420 series: X700, X700 Pro, X700 XT, X800, X800SE, X800 GT, X800 GTO, X800 Pro, X800 AIW, X800 XL, X800 XT, X800 XTPE, X850 Pro, X850 XT, X850 XTPE
Radeon RS690: X1200 mobility

From NVIDIA GeForce FX (includes PCX versions): 5100, 5200, 5200 SE/XT, 5200 Ultra, 5300, 5500, 5600, 5600 SE/XT, 5600 Ultra, 5700, 5700 VE, 5700 LE, 5700 Ultra, 5750, 5800, 5800 Ultra, 5900 5900 ZT, 5900 SE/XT, 5900 Ultra, 5950, 5950 Ultra
From S3 Graphics Delta Chrome: S4, S4 Pro, S8, S8 Nitro, F1, F1 Pole

Gamma Chrome: S18 Pro, S18 Ultra, S25, S27

From SiS Xabre: Xabre II
From XGI Volari: V3 XT, V5, V5, V8, V8 Ultra, Duo V5 Ultra, Duo V8 Ultra, 8300, 8600, 8600 XT
Shader Model 3.0 Compliant
From ATI R520 series: X1300 HyperMemory Edition, X1300, X1300 Pro, X1600 Pro, X1600 XT, X1650 Pro, X1650 XT, X1800 GTO, X1800 XL AIW, X1800 XL, X1800 XT, X1900 AIW, X1900 GT, X1900 XT, X1900 XTX, X1950 Pro, X1950 XT, X1950 XTX, Xenos (Xbox 360)
From NVIDIA GeForce 6: 6100, 6150, 6200 LE, 6200, 6200 TC, 6250, 6500, 6600, 6600 LE, 6600 DDR2, 6600 GT, 6610 XL, 6700 XL, 6800, 6800 LE, 6800 XT, 6800 GS, 6800 GTO, 6800 GT, 6800 Ultra, 6800 Ultra Extreme

GeForce 7: 7300 LE, 7300 GS, 7300 GT, 7600 GS, 7600 GT, 7800 GS, 7800 GT, 7800 GTX, 7800 GTX 512MB, 7900 GS, 7900 GT, 7950 GT, 7900 GTO, 7900 GTX, 7900 GX2, 7950 GX2, 7950 GT, RSX (PlayStation 3)

Shader Model 4.0/4.1* Compliant
From ATI R600 series:[10] HD 2900 XT, HD 2900 Pro, HD 2900 GT, HD 2600 XT, HD 2600 Pro, HD 2400 XT, HD 2400 Pro, HD 2350, HD 3870*, HD 3850*, HD 3650*, HD 3470*, HD 3450*, HD 3870 X2*

R700 series:[11] HD 4870 X2, HD 4890, HD 4870*, HD4850*, HD 4670*, HD 4650*

From NVIDIA GeForce 8:[12] 8800 Ultra, 8800 GTX, 8800 GT, 8800 GTS, 8800GTS 512MB, 8800GS, 8600 GTS, 8600 GT, 8600M GS, 8600M GT, 8500 GT, 8400 GS, 8300 GS, 8300 GT, 8300

GeForce 9 Series:[13] 9800 GX2, 9800 GTX (+), 9800 GT, 9600 GT, 9600 GSO, 9500 GT, 9400 GT, 9300 GT, 9300 GS, 9200 GT

GeForce 200 Series:[14] GTX 295, GTX 285, GTX 280, GTX 275, GTX 260, GTS 250, GTS240, GT240*, GT220*

Shader Model 5.0 Compliant
From ATI R800 Series:[15] HD 5750, HD 5770, HD 5850, HD 5870, HD 5870 X2, HD 5970*

R900 Series:[16] HD 6990, HD 6970, HD 6950, HD 6870, HD 6850, HD 6770, HD 6750, HD 6670, HD 6570, HD 6450

From NVIDIA GeForce 400 Series:[17] GTX 480, GTX 475, GTX 470, GTX 465, GTX 460, GTS 450

GeForce 500 Series:[18] GTX 590, GTX 580, GTX 570, GTX 560 Ti, GTX 550 Ti

GPUs designed for workstations

Shader Model 2 Compliant (Includes versions 2.0, 2.0a and 2.0b)
From ATI FireGL: Z1-128, T2-128, X1-128, X2-256, X2-256t, V3100, V3200, X3-256, V5000, V5100, V7100
From NVIDIA Quadro FX: 330, 500, 600, 700, 1000, 1100, 1300, 2000, 3000
Shader Model 3.0 Compliant
From ATI FireGL: V7300, V7350
From NVIDIA Quadro FX: 350, 540, 550, 560, 1400, 1500, 3400, 3450, 3500, 4000, 4400, 4500, 4500SDI, 4500 X2, 5500, 5500SDI
From 3Dlabs Wildcat Realizm: 100, 200, 500, 800

Game engines that support HDR rendering[edit]

See also[edit]

References[edit]

  1. ^ Simon Green and Cem Cebenoyan (2004). "High Dynamic Range Rendering (on the GeForce 6800)" (PDF). GeForce 6 Series. nVidia. p. 3. 
  2. ^ Reinhard, Erik; Greg Ward; Sumanta Pattanaik; Paul Debevec (August 2005). High Dynamic Range Imaging: Acquisition, Display, and Image-Based Lighting. Westport, Connecticut: Morgan Kaufmann. ISBN 0-12-585263-0. 
  3. ^ Greg Ward. "High Dynamic Range Imaging". Retrieved 18 August 2009. 
  4. ^ Eihachiro Nakamae; Kazufumi Kaneda; Takashi Okamoto; Tomoyuki Nishita (1990). "A lighting model aiming at drive simulators". Siggraph: 395. doi:10.1145/97879.97922. ISBN 0201509334. 
  5. ^ a b c Greg Spencer; Peter Shirley; Kurt Zimmerman; Donald P. Greenberg (1995). "Physically-based glare effects for digital images". Siggraph: 325. doi:10.1145/218380.218466. ISBN 0897917014. 
  6. ^ Paul E. Debevec and Jitendra Malik (1997). "Recovering high dynamic range radiance maps from photographs". Siggraph. 
  7. ^ Paul E. Debevec (1998). "Rendering synthetic objects into real scenes: bridging traditional and image-based graphics with global illumination and high dynamic range photography". Siggraph. 
  8. ^ Forcade, Tim (February 1998). "Unraveling Riven". Computer Graphics World. 
  9. ^ Valve (2003). "Half-Life 2: Source DirectX 9.0 Effects Trailer (2003)". YouTube. 
  10. ^ "ATI Radeon 2400 Series – GPU Specifications". radeon series. Retrieved 2007-09-10. 
  11. ^ "ATI Radeon HD 4800 Series – Overview". radeon series. Retrieved 2008-07-01. 
  12. ^ "Geforce 8800 Technical Specifications". Geforce 8 Series. Retrieved 2006-11-20. 
  13. ^ "NVIDIA Geforce 9800 GX2". Geforce 9 Series. Retrieved 2008-07-01. 
  14. ^ "Geforce GTX 285 Technical Specifications". Geforce 200 Series. Retrieved 2010-06-22. 
  15. ^ "ATI Radeon HD 5000 Series – Overview". radeon series. Retrieved 2011-03-29. 
  16. ^ "AMD Radeon HD 6000 Series – Overview". Radeon Series. Retrieved 2011-03-29. 
  17. ^ "Geforce GTX 480 Technical Specifications". Geforce 400 Series. Retrieved 2010-06-22. 
  18. ^ "Geforce GTX 580 Specifications". Geforce 500 Series. Retrieved 2011-03-29. 
  19. ^ "Rendering – Features – Unreal Technology". Epic Games. 2006. Retrieved 2011-03-15. 
  20. ^ "SOURCE – RENDERING SYSTEM". Valve Corporation. 2007. Retrieved 2011-03-15. 
  21. ^ "FarCry 1.3: Crytek’s Last Play Brings HDR and 3Dc for the First Time". X-bit Labs. 2004. Retrieved 2011-03-15. 
  22. ^ "CryEngine 2 – Overview". CryTek. 2011. Retrieved 2011-03-15. 
  23. ^ "Unigine Engine – Unigine (advanced 3D engine for multi-platform games and virtual reality systems)". Unigine Corp. 2011. Retrieved 2011-03-15. 

External links[edit]