Las funciones de iluminación son materiales que se pueden aplicar a las luces para enmascarar y filtrar su intensidad. Se trata de un enfoque basado en los materiales, lo que significa que puedes tener efectos animados que funcionan con luces cuando se aplican a mallas opacas. También son compatibles con el sombreado con niebla volumétrica, lo que hace que las funciones de iluminación sean más útiles para crear variaciones de iluminación, como cáusticas en el agua, nubes y plantillas proyectadas.
Función de iluminación del proyecto de ejemplos de contenido que muestra una animación basada en materiales, utilizando una función de iluminación con niebla volumétrica.
Las funciones de iluminación se pueden aplicar a luces que tengan su movilidad establecida como móvil o estacionaria, y no se es posible hacer bake en mapas de luz. Las funciones de iluminación siguen los mismos procesos de renderizado costosos que las luces con sombras dinámicas, ya que su contribución debe acumularse primero en el espacio en pantalla. A continuación, el segundo pase de la función de iluminación evalúa la iluminación del espacio en pantalla. Esta es una operación secuencial que se realiza en la GPU y lleva más tiempo debido a las sincronizaciones de recursos y los vaciados de caché que se producen.
A continuación, se muestran algunos ejemplos de funciones de iluminación usadas con distintos tipos de luz.
Luz direccional con función de iluminación de sombras de nubes | Luz focal con función de iluminación de cáusticos | Luz puntual y de foco con función de luz coloreada y niebla volumétrica |
Crear una función de iluminación
Puedes crear una función de iluminación en un material ajustando Material Domain en función de iluminación. Todos los nodos se introducen en la entrada de color emisivo del nodo de material principal.
Aplicación de funciones de iluminación a una luz
Para usar un material con función de iluminación con una luz, asígnalo a la ranura de material con funciones de luz de la luz usando el panel de detalles de la luz.
Una vez que se ha asignado una función de iluminación a una luz, no hace falta que Proyectar sombras esté habilitado para mostrar el material de la función de iluminación.
Las funciones de iluminación incluyen las siguientes propiedades en las luces:
| Propiedad | Descripción |
|---|---|
Material de función de iluminación | La ranura para aplicar el material de la función de iluminación a esta luz. Solo las luces sin mapa de luz pueden tener una función de iluminación aplicada. |
Escala de la función de iluminación | Escala la función de iluminación que se está proyectando. X e Y escalan las direcciones perpendiculares a la dirección de la luz. Z se escala en la dirección de la luz. |
Distancia de atenuación | Establece la distancia a la que la función de iluminación debe atenuarse completamente hasta tener el valor de brillo deshabilitado. Esto es útil para ocultar el aliasing de las funciones de luz aplicadas en la distancia. |
Brillo deshabilitado | Factor de brillo aplicado a la luz cuando la función de iluminación está especificada pero deshabilitada, como en las capturas de escena que tienen las sombras deshabilitadas. Debe ajustarse al brillo medio de la entrada reflectante del material de la función de luz, que debe estar entre 0 y 1. |
Atlas de función de iluminación
Las funciones de iluminación usan los mismos procesos de renderizado costosos que las luces con sombras dinámicas. La contribución de la función de la iluminación debe acumularse primero en el espacio en pantalla y, a continuación, realizar un segundo pase que evalúe la iluminación en el espacio en pantalla. Esta operación secuencial que se realiza en la GPU lleva más tiempo debido a las sincronizaciones de recursos y los vaciados de caché.
Para mitigar el alto coste de GPU durante este proceso, el atlas de funciones de iluminación es un proceso generativo que se usa para hacer bake de funciones de luz animadas en las teselas (o texturas 2D) que componen el atlas. Estas texturas 2D se almacenan y luego se proyectan en la escena. Para entender mejor esta operación, puedes usar la visualización del atlas de funciones de iluminación para ver cómo se almacena cada función de iluminación de la escena como un mosaico dentro del atlas.
La escena de ejemplo que aparece a continuación contiene cuatro funciones de luz con bake de teselas de textura 2D y que se han almacenado como mosaicos en el atlas.
El proceso de bake de funciones de iluminación en la textura 2D del atlas es un proceso totalmente paralelo que se lleva a cabo en la GPU y el resultado se comparte entre todas las vistas de una escena. Luego, durante el pase de luz, todas las luces que contengan un material con función de iluminación y que no tengan la función de proyección de sombras habilitada se podrán acumular en paralelo en la pantalla. Esto puede conseguir un importante ahorro de tiempo en la GPU. Por ejemplo, la plantilla de entorno de Talisman del editor de Fortnite de Unreal Engine (UEFN) midió una reducción del tiempo de GPU de más de 2 milisegundos (ms).
A diferencia de las funciones de iluminación heredadas, el atlas de función de la iluminación es compatible con materiales con función de iluminación en color o en escala de grises.
Restricciones del atlas de función de iluminación
Los materiales de funciones de iluminación tienen algunas restricciones para que sean válidos y se pueda hacer bake en un atlas de funciones de iluminación. Ten en cuenta lo siguiente a la hora de activar el atlas de función de iluminación en tu proyecto:
No se puede muestrear el búfer de profundidad ni la posición en el mundo.
No se puede muestrear el GBuffer.
Para muestrear una textura, no se deben manipular los UV. Sin embargo, si haces esto, es importante que la manipulación de los UV esté alineada con los bordes del espacio de textura de la función de iluminación. De lo contrario, la ranura del atlas no será repetible.
Este problema es visible en las luces direccionales y rectangulares, o en cualquier luz que utilice el control de cambiar la escala de su panel de detalles.
Ahora mismo, se obliga a las luces direccionales a no muestrear el atlas.
Cuando se cumplen estas restricciones, se puede hacer bake de una función de función de iluminación en el atlas de función de iluminación para los pases de evaluación de iluminación rápida. Las funciones de iluminación se detectan automáticamente y se enrutan dentro y fuera del atlas de función de iluminación.
Visualización del atlas de función de iluminación
Puedes ver qué funciones de iluminación se han incluido o excluido del atlas de función de iluminación con el comando ShowFlag.VisualizeLightFunctionAtlas 1.
En esta visualización, se muestra la siguiente información:
El atlas de funciones de iluminación muestra todas las funciones de iluminación que forman parte de su atlas.
Información sobre las funciones de la luz en la escena:
El número de funciones de iluminación en el atlas.
El número de atlas de muestreo de luces locales.
Un gráfico de colores que vincula el número de luces que afectan a una función de iluminación en el atlas.
Una lista de funciones de iluminación que no son compatibles con el atlas de función de iluminación.
Configuración del proyecto de atlas de función de iluminación
Las siguientes propiedades se encuentran en la ventana de configuración del proyecto, en Motor > Renderización, dentro de la categoría Atlas de función de iluminación:
| Propiedad | Descripción | Estado por defecto |
|---|---|---|
Atlas de función de iluminación | Selecciona el formato de la textura del atlas de la función de iluminación. | Escala de grises de 8 bits |
La niebla volumétrica utiliza el atlas de función de iluminación | Habilita la compatibilidad para la función de iluminación en la niebla volumétrica cuando el atlas de la función de iluminación está habilitada. | Activado |
La iluminación diferida utiliza el atlas de función de iluminación | Habilitar la compatibilidad para la función de iluminación en la iluminación diferida (multipase y agrupada), cuando el atlas de función de iluminación está habilitado. | Activado |
El agua de una sola capa utiliza el atlas de función de iluminación | Habilita la compatibilidad para la función de iluminación en el agua monocapa cuando el atlas de la función de iluminación esté habilitado. | Deshabilitado |
Traslúcido utiliza el atlas de función de iluminación | Habilita la compatibilidad para la función de iluminación en el material traslúcido con el modo Forward Shading, cuando el atlas de función de iluminación esté habilitado. | Deshabilitado |
Ajuste de atlas de función de iluminación
Por defecto, el atlas de función de iluminación utiliza la escala de grises para las funciones de iluminación, pero puedes cambiarlo en la configuración del proyecto estableciendo el formato del atlas de función de iluminación en color RGB de 8 bits para que se utilice color. Las funciones de luces de colores funcionan con niebla volumétrica, la iluminación global de lúmenes y los reflejos, así como con materiales establecidos como traslúcidos o de una sola capa de agua.
Formato de atlas de función de iluminación: 8 bits escala de grises (por defecto) | Formato de atlas de función de iluminación: color RGB de 8 bits |
Las funciones de luces de colores requieren que la opción de iluminación diferida utiliza el atlas de función de iluminación esté habilitada. Este ajuste está activado por defecto cuando se usa el atlas de función de iluminación.
Atlas de funciones de iluminación en materiales traslúcidos y de agua de una sola capa
Por defecto, el atlas de función de iluminación se usa para la iluminación diferida, la niebla volumétrica, y la iluminación global y los reflejos de Lumen. Puedes aumentar aún más la fidelidad de tu proyecto con funciones de iluminación habilitándolas para admitir el muestreo en materiales traslúcidos y de una sola capa de agua.
Puedes activar la compatibilidad con materiales translúcidos y de agua de una sola capa en la configuración del proyecto, en Motor > Renderizado, dentro de la categoría Atlas de funciones de iluminación, mediante las opciones Traslúcido utiliza el atlas de función de iluminación y El agua de una sola capa utiliza el atlas de función de iluminación.
Traslúcido utiliza el atlas de función de iluminación: deshabilitado | Traslúcido utiliza el atlas de función de iluminación: habilitado |
Cuando Traslúcido utiliza el atlas de función de iluminación está habilitado, cualquier material traslúcido cuyo modo de iluminación esté establecido como ForwardShading de superficie puede recibir una función de iluminación en su superficie. Aunque la luz se proyecta sobre la superficie de un material traslúcido, la función de iluminación solo es visible (en escala de grises o en color) en la superficie cuando el material está configurado para ello.
Material traslúcido con el modo de iluminación establecido en “TranslucencyVolume de superficie”. | Material traslúcido con el modo de iluminación establecido en “ForwardShading de superficie”. |
Cuando la opción del agua de una sola capa utiliza el atlas de función de iluminación está habilitada, una masa de agua que utilice un material de agua de una sola capa recibirá las funciones de iluminación proyectadas desde una fuente de luz. Los coeficientes de absorción y los coeficientes de dispersión del material de agua de una sola capa afectan al aspecto de la función de iluminación bajo la superficie del agua. Estas propiedades afectan a cómo se propaga la luz por el medio. Por defecto, la luz azul se dispersa y los colores del espectro rojo se silencian.
El agua de una sola capa utiliza el atlas de función de iluminación: deshabilitado | El agua de una sola capa utiliza el atlas de función de iluminación: habilitado |
Si utilizas el material de agua de una sola capa por defecto con un cuerpo de agua, puedes ajustar la dureza para que la función de iluminación sea más o menos visible.
Notas adicionales del atlas de función de iluminación
Estas son algunas notas adicionales y variables de consola que puedes utilizar al trabajar con el atlas de función de iluminación:
Las funciones de iluminación en el atlas de textura crearán teselas y atenuarán adecuadamente según los parámetros configurados en el componente de luz.
Una instancia de material de función de función de iluminación ocupará su propia ranura en el atlas, independientemente del material base.
Para las funciones de luces de colores, cuando el formato se establece en 8 bits en escala de grises, se usa un formato de textura R8. Si no se establece lo contrario, se usará el formato de textura R8G8B8.
Variables útiles de consola:
r.LightFunctionAtlas: Se usa para activar o desactivar el atlas de función de iluminación y utilizar funciones de iluminación heredadas.r.LightFunctionAtlas.SlotResolution: Establece la resolución a la que se hace bake con un material con función de iluminación. Puedes ver la resolución en la visualización del atlas de función de iluminación.r.LightFunctionAtlas.Size: Establece el de tamaño del atlas de función de iluminación. Un valor de 4 (4x4) significa que habrá como máximo espacio para 16 materiales de función de iluminación con bake en el atlas. Puedes ver el de tamaño del atlas en la visualización del atlas de la función de iluminación.