It's very common in computer graphics to represent images in a format known as RGB. One of the largest issues with this format is the difficulty in simulating realistic lighting scenarios with a large range of of colors (also known as the dynamic range of a scene). For example, with traditional methods, it's difficult to capture a really bright sun and a dark alleyway in the same image without significant loss of detail.
Comparison of normal vs HDR rendering from the game Half-Life 2. Note the increased detail and contrast in the HDR version on the right. (image credit Wikipedia)
High dynamic range (HDR) techniques attempt to combat this issue and ultimately lead to more physically plausible graphics by representing color in more precise floating point formats that are capable of accurately representing the entire visible spectrum. Eventually, any HDR rendering pipeline has to compress this larger spectrum back into the standard RGB color space in order to view the results on a normal screen, and this compression process is known as tone mapping.
In basic terms, HDR will make bright things really bright, dark things really dark, and still have enough contrast inbetween to discern details. End-to-end HDR support is one of the cornerstones of modern rendering engines, both in terms of real-time games as well as offline renderers, and at Floored, the Luma rendering engine is no different.
When you talk about HDR in a 3D engine, it generally refers to one of two things:
Texture support for HDR-specific image formats such as RGBE, OpenEXR, LogLuv, etc. Luma currently supports a custom HDR format for high quality environment mapping and will be adding support for more HDR image formats soon.
Using floating point textures for internal computations to increased precision and remove arbitrary clamping. Luma utilizes floating point textures for most important internal render targets, including shadow maps, g-buffer, and deferred lighting calculations.
Luma uses floating-point textures to process all internal lighting calculations and then uses a simple global Reinhard tonemapping operator to efficiently compress the resulting luminance values into an aesthetically-pleasing RGB display.
Note that WebGL currently defines floating point texture support as an extension (OEStexturefloat), and it is not guaranteed to be available on all WebGL browsers (though in practice it's very well supported on most desktop browsers via webglstats).
The primary disadvantage of having an HDR-oriented pipeline is the increased memory footprint of using larger floating-point textures everywhere, which can be an especially constraining problem on mobile devices without much memory and/or shared VRAM/RAM. That being said, in practice on desktop WebGL, the benefits of using HDR in terms of overall realism greatly outweigh these relatively manageable performance costs.
There are a number of HDR image formats available, each with their own pros and cons. Here are some of the most popular HDR formats:
Note that there are other HDR image formats, including Portable Float Maps (.pfm), scRGB, and Pixar's log-encoded TIFF, but they don't see much use in practice.
SpiderGL has a WebGL demo displaying an HDR texture with variable exposure (using PNGHDR format which appears to be a PNG version of RGBE).