# Renderización de alto rango dinámico

La renderización de alto rango dinámico (HDRR - high-dynamic-range rendering o HDR rendering), también conocida como iluminación de alto rango dinámico (high-dynamic-range lighting), es la renderización de escenas de gráficos por computadora mediante el uso de cálculos de iluminación realizados en alto rango dinámico (HDR). Esto permite conservar los detalles que pueden perderse debido a las relaciones de contraste limitadas. Los videojuegos, las películas generadas por computadora y los efectos especiales se benefician de esto, ya que crea escenas más realistas que con modelos de iluminación más simples.
La empresa de procesadores de gráficos Nvidia resume la motivación para HDR en tres puntos: las cosas brillantes pueden ser realmente brillantes, las cosas oscuras pueden ser realmente oscuras y los detalles se pueden ver en ambos.

## Historia

El uso de imágenes de alto rango dinámico (HDRI) en gráficos por computadora fue introducido por Greg Ward en 1985 con su software de simulación de iluminación y renderizado Radiance de código abierto que creó el primer formato de archivo para retener una imagen de alto rango dinámico. HDRI languideció durante más de una década, retenido por métodos de captura, almacenamiento y poder de cómputo limitados. Hasta hace poco no se había desarrollado la tecnología para poner HDRI en uso práctico.
En 1990, Nakame, et al., presentó un modelo de iluminación para simuladores de conducción que destacaba la necesidad de procesamiento de alto rango dinámico en simulaciones realistas.
En 1995, Greg Spencer presentó efectos de deslumbramiento basados en la física para imágenes digitales en SIGGRAPH, proporcionando un modelo cuantitativo para el resplandor y la floración en el ojo humano.
En 1997, Paul Debevec presentó Recuperación de mapas de radiancia de alto rango dinámico a partir de fotografías en SIGGRAPH, y al año siguiente presentó Transformación de objetos sintéticos en escenas reales. Estos dos documentos sentaron las bases para crear sondas de luz HDR de una ubicación y luego usar esta sonda para iluminar una escena renderizada.
Desde entonces, HDRI y HDRL (iluminación basada en imágenes de alto rango dinámico) se han utilizado en muchas situaciones en escenas 3D en las que insertar un objeto 3D en un entorno real requiere los datos de la sonda de luz para proporcionar soluciones de iluminación realistas.
En aplicaciones de juegos, Riven: The Sequel to Myst en 1997 usó un sombreador de posprocesamiento HDRI basado directamente en el artículo de Spencer. Después del E3 de 2003, Valve lanzó una película de demostración de su motor Source que muestra un paisaje urbano en un alto rango dinámico. El término no se volvió a utilizar con frecuencia hasta el E3 de 2004, donde atrajo mucha más atención cuando Epic Games presentó Unreal Engine 3 y Valve anunció Half-Life 2: Lost Coast en 2005, junto con motores de código abierto como OGRE 3D y software libre. Juegos fuente como Nexuiz.

## Ejemplos

Una de las principales ventajas del renderizado HDR es que se conservan los detalles de una escena con una gran relación de contraste. Sin HDR, las áreas que son demasiado oscuras se recortan a negro y las áreas que son demasiado brillantes se recortan a blanco. Estos están representados por el hardware como un valor de coma flotante de 0,0 y 1,0 para negro puro y blanco puro, respectivamente.
Otro aspecto del renderizado HDR es la adición de señales perceptivas que aumentan el brillo aparente. El renderizado HDR también afecta cómo se conserva la luz en fenómenos ópticos como reflejos y refracciones, así como en materiales transparentes como el vidrio. En el renderizado LDR, las fuentes de luz muy brillantes en una escena (como el sol) tienen un límite de 1.0. Cuando esta luz se refleja, el resultado debe ser menor o igual a 1,0. Sin embargo, en el renderizado HDR, las fuentes de luz muy brillantes pueden superar el brillo de 1,0 para simular sus valores reales. Esto permite que los reflejos de las superficies mantengan un brillo realista para fuentes de luz brillantes.

## Limitaciones y compensaciones
### Ojo humano

El ojo humano puede percibir escenas con una relación de contraste dinámico muy alta, alrededor de 1.000.000:1. La adaptación se logra en parte a través de ajustes del iris y cambios químicos lentos, que toman algún tiempo (por ejemplo, la demora en poder ver cuando se cambia de una iluminación brillante a una oscuridad total). En un momento dado, el rango estático del ojo es más pequeño, alrededor de 10.000:1. Sin embargo, esto sigue siendo más alto que el rango estático de la mayoría de las tecnologías de visualización.

### Salida a pantallas

Aunque muchos fabricantes afirman números muy altos, las pantallas de plasma, pantallas LCD y pantallas CRT pueden ofrecer solo una fracción de la relación de contraste que se encuentra en el mundo real, y generalmente se miden en condiciones ideales. El contraste simultáneo del contenido real en condiciones normales de visualización es significativamente menor.
Se puede lograr cierto aumento en el rango dinámico en los monitores LCD reduciendo automáticamente la luz de fondo para las escenas oscuras. Por ejemplo, LG llama a esta tecnología "Digital Fine Contrast"; Samsung lo describe como "relación de contraste dinámico". Otra técnica es tener una matriz de retroiluminación LED más brillante y más oscura, por ejemplo, con sistemas desarrollados por BrightSide Technologies.
Las pantallas OLED tienen mejores capacidades de rango dinámico que las LCD, similares al plasma pero con menor consumo de energía. rec. 709 define el espacio de color para HDTV y Rec. 2020 define un espacio de color más grande pero aún incompleto para la televisión de ultra alta definición.

### Light bloom

El florecimiento de la luz (Light blooming) es el resultado de la dispersión en la lente humana, que el cerebro humano interpreta como un punto brillante en una escena. Por ejemplo, una luz brillante en el fondo parecerá desvanecerse sobre los objetos en primer plano. Esto se puede usar para crear una ilusión para que el punto brillante parezca más brillante de lo que realmente es.

### Flare

Flare es la difracción de la luz en la lente humana, lo que resulta en "rayos" de luz que emanan de pequeñas fuentes de luz, y también puede resultar en algunos efectos cromáticos. Es más visible en fuentes de luz puntuales debido a su pequeño ángulo visual.
De lo contrario, los sistemas de renderizado HDR tienen que mapear el rango dinámico completo de lo que el ojo vería en la situación renderizada en las capacidades del dispositivo. Este mapeo de tonos se realiza en relación con lo que ve la cámara de escena virtual, combinado con varios efectos de pantalla completa, por ejemplo, para simular el polvo en el aire que está iluminado por la luz solar directa en una caverna oscura, o la dispersión en el ojo.
El mapeo de tonos y los sombreadores de floración se pueden usar juntos para ayudar a simular estos efectos.

### Mapeo de tonos

El mapeo de tonos, en el contexto de la representación de gráficos, es una técnica utilizada para mapear colores desde un rango dinámico alto (en el que se realizan cálculos de iluminación) a un rango dinámico más bajo que coincida con las capacidades del dispositivo de visualización deseado. Por lo general, el mapeo no es lineal: conserva suficiente rango para los colores oscuros y limita gradualmente el rango dinámico para los colores brillantes. Esta técnica a menudo produce imágenes visualmente atractivas con buen detalle y contraste en general. Existen varios operadores de mapeo de tonos, que van desde métodos simples en tiempo real utilizados en juegos de computadora hasta técnicas más sofisticadas que intentan imitar la respuesta perceptiva del sistema visual humano.

## Aplicaciones en el entretenimiento informático

Actualmente HDRR ha prevalecido en los juegos, principalmente para PC, Xbox 360 de Microsoft y PlayStation 3 de Sony. También se ha simulado en los sistemas PlayStation 2, GameCube, Xbox y Amiga. Sproing Interactive Media ha anunciado que su nuevo motor de juego Athena para Wii admitirá HDRR, agregando Wii a la lista de sistemas que lo admiten.
En la autoedición y los juegos, los valores de color a menudo se procesan varias veces. Como esto incluye la multiplicación y la división (que pueden acumular errores de redondeo), es útil contar con la precisión extendida y el rango de los formatos de enteros de 16 bits o coma flotante de 16 bits. Esto es útil independientemente de las limitaciones antes mencionadas en algunos hardware.

### Desarrollo de HDRR a través de DirectX

Los efectos de sombreado complejos comenzaron sus días con el lanzamiento de Shader Model 1.0 con DirectX 8. Shader Model 1.0 iluminó mundos 3D con lo que se denomina iluminación estándar. La iluminación estándar, sin embargo, tenía dos problemas:
* La precisión de la iluminación se limitó a números enteros de 8 bits, lo que limitó la relación de contraste a 256:1. Con el modelo de color HVS, el valor (V) o el brillo de un color tiene un rango de 0 a 255. Esto significa que el blanco más brillante (un valor de 255) es solo 255 niveles más brillante que el tono más oscuro por encima del negro puro (es decir, valor de 0).
* Los cálculos de iluminación se basaban en números enteros, lo que no ofrecía tanta precisión porque el mundo real no se limita a números enteros.
El 24 de diciembre de 2002, Microsoft lanzó una nueva versión de DirectX. DirectX 9.0 presentó Shader Model 2.0, que ofrecía uno de los componentes necesarios para permitir la representación de imágenes de alto rango dinámico: la precisión de la iluminación no se limitaba a solo 8 bits. Aunque 8 bits era el mínimo en las aplicaciones, los programadores podían elegir hasta un máximo de 24 bits para la precisión de iluminación. Sin embargo, todos los cálculos seguían basados en números enteros. Una de las primeras tarjetas gráficas que admitió DirectX 9.0 de forma nativa fue la Radeon 9700 de ATI, aunque el efecto no se programó en los juegos durante años. El 23 de agosto de 2003, Microsoft actualizó DirectX a DirectX 9.0b, lo que permitió el perfil Pixel Shader 2.x (extendido) para la serie Radeon X de ATI y la serie de unidades de procesamiento de gráficos GeForce FX de NVIDIA.
El 9 de agosto de 2004, Microsoft actualizó DirectX una vez más a DirectX 9.0c. Esto también expuso el perfil Shader Model 3.0 para High-Level Shader Language (HLSL). La precisión de iluminación de Shader Model 3.0 tiene un mínimo de 32 bits en comparación con el mínimo de 8 bits de 2.0. Además, todos los cálculos de precisión de iluminación ahora se basan en comas flotantes. NVIDIA afirma que las relaciones de contraste con Shader Model 3.0 pueden llegar a 65535:1 con una precisión de iluminación de 32 bits. Al principio, HDRR solo era posible en tarjetas de video capaces de efectos Shader-Model-3.0, pero los desarrolladores de software pronto agregaron compatibilidad para Shader Model 2.0. Como nota al margen, cuando se lo conoce como Shader Model 3.0 HDR, HDRR realmente se realiza mediante la combinación FP16. La combinación de FP16 no forma parte de Shader Model 3.0, pero es compatible principalmente con tarjetas que también admiten Shader Model 3.0 (las excepciones incluyen la serie GeForce 6200). La mezcla FP16 se puede usar como una forma más rápida de renderizar HDR en videojuegos.
Shader Model 4.0 es una función de DirectX 10, que se lanzó con Windows Vista. Shader Model 4.0 permite la representación HDR de 128 bits, a diferencia del HDR de 64 bits en Shader Model 3.0 (aunque esto es teóricamente posible en Shader Model 3.0).
Shader Model 5.0 es una característica de DirectX 11. Permite la compresión 6:1 de texturas HDR sin pérdidas apreciables, lo que prevalece en las versiones anteriores de las técnicas de compresión de texturas DirectX HDR.

### Desarrollo de HDRR a través de OpenGL

Es posible desarrollar HDRR a través del sombreador GLSL a partir de OpenGL 1.4 en adelante.

### Motores de juego que admiten renderizado HDR

* Unreal Engine 5
* Unreal Engine 4
* Unreal Engine 3
* Chrome Engine 3
* Source
* REDengine 3
* CryEngine, CryEngine 2, CryEngine 3
* Dunia Engine
* Gamebryo
* Godot (game engine)
* Decima
* Unity
* id Tech 5
* LithTech
* Unigine
* Frostbite 2
* Real Virtuality 2, Real Virtuality 3, Real Virtuality 4
* HPL Engine 3
* Babylon JS
* Torque 3D
* X-Ray Engine