Renderizado HDR(Imágenes de Alto Rango Dinámico) en Unity
En un renderizado estándar, los valores rojo, verde y azul para un píxel son cada uno representados por una fracción en un rango de 0..1, dónde 0 representan intensidad cero y 1 representa la intensidad máxima para la pantalla del dispositivo. Si bien esto es sencillo de usar, esto no refleja con precisión la manera en que la iluminación funciona en una escena de la vida real. El ojo humano tiende a ajustar las condiciones de iluminación locales, para que un objeto que parece blanco en una habitación con poca luz pueda de hecho ser menos brillante que un objeto que parezca gris en plena luz del día. Adicionalmente, el ojo es más sensible a las diferencias de brillo en el extremo inferior del rango que en el extremo superior.
Más efectos visuales convincentes pueden ser logrados si la renderización está adaptada para dejar que los rangos de los valores de píxel reflejen con más precisión los niveles de luz que estarían presentes en una escena real. Aunque estos valores en ultimas necesitan ser asignados de nuevo al rango disponible en la pantalla del dispositivo, cualquier calculación intermedia (tal como los efectos de imagen de Unity) va a dar un resultado más autentico. Permitir que la representación interna de los gráficos utilicen valores afuera del rango 0..1 es la esencia del renderizado Imágenes de Alto Rango Dinámico (High Dynamic Range) (HDR)
Trabajando con HDR
HDR es habilitado por separado para cada cámara utilizando un ajuste en el componente de la Cámara:-
Cuando HDR está activo, la escena es renderizada en un búfer de imagen HDR que puede acomodar los valores de píxel afuera del rango 0..1. Este búfer es luego post-procesado usando efectos de imagen como HDR bloom. El efecto de imagen tonemapping es lo que convierte la imagen HDR a una imagen de bajo rango dinámico (LDR) para ser enviada a que se visualice. La conversión a LDR debe ser aplicada en algún punto del canalizado(pipeline) del efecto de imagen pero no necesita ser el último paso si los efectos de imagen LDR-únicamente son aplicados después. Por convieniencia, algunas efectos de imagen pueden ser automáticamente convertidos a LDR después de aplicar un efecto HDR ( vea el Scripting a continuación).
El Mapeo de Tonos es el proceso del mapeo de valores HDR al rango LDR. Hay muchas diferentes técnicas, y lo que es bueno para un proyecto puede no ser lo mejor para otro. Una variedad de efectos de imagen del Mapeo de tonos han sido incluidos en Unity. Para utilizarlos, seleccione Assets -> Import Package -> Image Effects (Pro Only) seleccione la cámara en la escena luego seleccione Component -> Image Effects ->ToneMapping una descripción detallada de los tipos de Mapeo de Tonos puede ser encontrada en image effects documentation.
El uso de HDR permite mucho más control en el procesamiento posterior. El bloom LDR tiene una efecto secundario desafortunado de desenfocar muchas áreas de la escena incluso si la intensidad de su píxel es menor que 1.0. Al usar HDR es posible bloom áreas dónde la intensidad es mayor que uno. Esto lleva a un resultado mucho más deseable con sólo los elementos súper brillantes de una escena sangrando a unos píxeles vecinos. Los efectos de imagen integrados ‘Bloom and Lens Flares’ ahora también soportan HDR. Para adjuntarlo a una cámara seleccione Assets -> Import Package -> Image Effects (Pro Only) seleccione la cámara en la escena y luego seleccione Component -> Image Effects ->Bloom una descripción detallada del efecto ‘Bloom’ puede ser encontrada en image effects documentation.
Ventajas de HDR
Desventajas de HDR
Notas de Uso
En el modo Forward Rendering, HDR es solamente soportado si usted tiene un efecto de imagen presente. Esto se debe a unas consideraciones de rendimiento. Si usted no tiene ningún efecto de imagen presente, entonces ningún mapeo de tonos existiría y un truncamiento de intensidad se produciría. En esta situación la escena será renderizada directamente a el backbuffer dónde el HDR no es soportado.
En modo HDR el búfer de luz prepass también es atribuido como un búfer floating point. Esto reduce las bandas en el búfer de iluminación. HDR es soportado en deferred rendering así sea que ningún efecto de imagen esté presente.
El atributo ImageEffectTransformsToLDR puede ser agregado a un script de efecto de imagen para indicar que el búfer deseado debe estar en LDR en vez de HDR. Esencialmente, esto significa que un script puede automáticamente convertirse en LDR después de aplicar su efecto de imagen HDR.