As funções de luz são materiais que podem ser aplicados às luzes para mascarar e filtrar a intensidade da luz. Essa é uma abordagem orientada por materiais. Isso significa que você pode ter efeitos animados que funcionam com luzes aplicadas a malhas opacas. Elas também são compatíveis com sombreamento com neblina volumétrica, tornando as funções de iluminação mais úteis para a criação de variações de iluminação, como cáusticos na água, nuvens e estênceis projetados.
A função de luz do projeto Exemplos de Conteúdo que demonstra animação baseada em material usando uma função de luz com neblina volumétrica.
As funções de luz só podem ser aplicadas a luzes com a mobilidade definida como Móvel ou Estacionário e não podem ser incorporadas em mapas de iluminação. As funções de luz seguem as mesmas etapas de renderização caras das luzes que converter sombras dinâmico, pois a contribuição da função de luz precisa ser acumulada primeiro no espaço de tela. A segunda etapa da função de luz avalia a iluminação no espaço de tela. Essa é uma operação sequencial que ocorre na GPU e leva mais tempo devido à ocorrência de sincronizações de recurso e liberações de cache.
Abaixo estão alguns exemplos de funções de luz usadas com diferentes tipos de luz.
Luz direcional com função de luz de sombra de nuvem. | Luz de holofote com função de luz cáustica. | Luz de holofote e pontual com função de luz colorida com neblina volumétrica. |
Como criar uma função de luz
Você pode criar uma função de luz em um material definindo o Domínio do material como Função de luz. Todos os nós alimentam a entrada Cor emissiva no nó de material principal.
Como aplicar uma função de luz a uma luz
Para usar um material da função de luz com uma luz, atribua-o a um espaço de Material da função de luz usando o painel Detalhes da luz.
Quando uma função de luz é atribuída a uma luz, a opção Projetar sombras não precisa estar habilitada para exibir o material da função de luz.
As funções de luz incluem as seguintes propriedades das luzes:
| Propriedade | Descrição |
|---|---|
Material da função de luz | O espaço para aplicar um material de função de luz a esta luz. Somente as luzes sem mapeamento podem ter uma função de luz aplicada. |
Escala da função de luz | Dimensiona a função de luz que está sendo projetada. X e Y dimensionam as direções perpendiculares à direção da luz. Z é dimensionado de acordo com a direção da luz. |
Distância de Esmaecimento | Define uma distância na qual a função de luz deve ser completamente esmaecida para o valor de Brilho desabilitado. Essa funcionalidade é útil para ocultar o serrilhado das funções de luz aplicadas à distância. |
Brilho Desativado | O fator de brilho aplicado à luz quando a função de luz é especificada, mas desabilitada, como em capturas de cena que usam uma visualização que tem sombras desabilitadas. Essa funcionalidade deve ser definida para o brilho médio da entrada emissiva do material da função de luz, que deve estar entre 0 e 1. |
Atlas de função de luz
As funções de luz usam as mesmas etapas de renderização caras das luzes que projetam sombras dinâmicas. A contribuição da função de luz precisa ser acumulada primeiro no espaço de tela e, em seguida, ter uma segunda etapa que avalia a iluminação no espaço de tela. Essa operação sequencial na GPU leva mais tempo devido à sincronização de recursos e liberações de cache.
Para mitigar o alto custo de GPU durante esse processo, o Atlas de função de luz é um processo generativo usado para incorporar funções de luz animadas em ladrilhos (ou texturas 2D ) que compõem o atlas. Essas texturas 2D são armazenadas e projetadas na cena. Para entender melhor essa operação, use a visualização do atlas de função de luz para ver como cada função de luz na cena é armazenada no atlas como ladrilhos.
A cena de exemplo a seguir contém quatro funções de luz que foram incorporadas em ladrilhos de textura 2D e armazenadas no atlas.
O processo de incorporar funções de luz na textura 2D do Atlas é um processo totalmente paralelo feito na GPU, e o resultado é compartilhado entre todas as visualizações de uma cena. Em seguida, durante a passagem de luz, todas as luzes com um material com função de luz sem projeção de sombra habilitada podem ser acumuladas em paralelo na tela. Isso pode resultar em uma economia significativa de tempo da GPU. Por exemplo, o modelo de ambiente Talisman no Editor for Fortnite (UEFN) da Unreal Engine mediu uma redução de tempo da GPU de mais que 2 milissegundos (ms).
Ao contrário das funções de luz legadas, o atlas de função de luz é compatível com materiais com função de luz em escala de cinza ou coloridos.
Restrições do atlas de função de luz
Os materiais de função de luz têm algumas restrições para serem válidos e incorporados em um atlas de função de luz. Considere o seguinte ao habilitar o atlas de função de luz para seu projeto:
Não é possível amostrar o buffer de profundidade ou a posição no mundo.
Não é possível amostrar o GBuffer.
Para obter uma amostra de textura, os UV não devem ser manipulados. No entanto, se fizer isso, é importante que a manipulação de UV esteja alinhada às bordas do espaço de textura da função de luz. Caso contrário, o espaço do atlas não será repetível.
Esse problema é visível em luzes direcionais e retangulares, ou qualquer luz que use o controle de dimensionamento do painel Detalhes.
No momento, as luzes direcionais são forçadas a não amostrar o atlas.
Quando essas restrições são atendidas, uma função de luz pode ser incorporada ao atlas de função de luz para as etapas rápidas de avaliação de iluminação. As funções de luz são detectadas e roteadas de forma automática para dentro e fora do atlas de função de luz.
Visualização do atlas de função de luz
Você pode visualizar quais funções de luz foram incluídas ou excluídas do atlas de função de luz usando o comando ShowFlag.VisualizeLightFunctionAtlas 1.
Nessa visualização, as seguintes informações são exibidas:
O Atlas de função de luz mostra todas as funções de luz que fazem parte do atlas.
Informações sobre as funções de luz na cena:
O número de funções de luz no atlas.
O número do amostras de luzes locais no atlas.
Uma tabela de cores que relaciona o número de luzes que afetam uma função de luz no atlas.
Uma lista de funções de luz que não são compatíveis com o atlas de função de luz.
Configurações de projeto do atlas de função de luz
As seguintes propriedades podem ser encontradas na janela Configurações de Projeto em Engine > Renderização na categoria Atlas de função de luz:
| Propriedade | Descrição | Estado padrão |
|---|---|---|
Atlas de função de luz | Selecione o formato da textura do atlas de função de luz. | Escala de cinza de 8 bits |
Neblina volumétrica usa o atlas de função de luz | Habilite o suporte para função de luz em neblina volumétrica quando o atlas de função de luz estiver habilitado. | Habilitado |
Iluminação diferida usa o atlas de função de luz | Habilite o suporte para função de luz em iluminação diferida (multipassagem e cluster), quando o atlas de função de luz estiver habilitado. | Habilitado |
Água de camada única usa o atlas de função de luz | Habilite o suporte para função de luz em água de camada única quando o atlas de função de luz estiver habilitado. | Desabilitado |
Translúcido usa o atlas de função de luz | Habilite o suporte para a função de luz em materiais translúcidos usando o modo Sombreamento direto, quando o atlas de função de luz estiver habilitado. | Desabilitado |
Como definir o formato do atlas de função de luz
Por padrão, o atlas de função de luz usa escala de cinza para as funções de luz, mas você pode alterar isso nas Configurações de Projeto definindo o Formato do atlas de função de luz como Cor RGB de 8 bits para usar cores. As funções de luz colorida funcionam com neblina volumétrica, iluminação global e reflexos do Lumen, e com materiais definidos como translúcidos ou água de camada única.
Formato do atlas de função de luz: escala de cinza de 8 bits (padrão) | Formato do atlas de função de luz: cor RGB de 8 bits |
As funções de luz colorida exigem que a configuração de projeto Iluminação diferida usa o atlas de função de luz esteja habilitada. Essa configuração está ativada por padrão ao usar o atlas de função de luz.
Atlas de função de luz em materiais translúcidos e de água de camada única
Por padrão, o atlas de função de luz é usado para iluminação diferida, neblina volumétrica e iluminação global e reflexos do Lumen. Você pode aumentar ainda mais a fidelidade do seu projeto com funções de luz, permitindo que elas sejam compatíveis com amostragem em materiais translúcidos e de água de camada única.
Você pode ativar o suporte para materiais translúcidos e de água de camada única nas Configurações de Projeto em Engine > Renderização, na categoria Atlas de função de luz com Translúcido usa o atlas de função de luz e Água de camada única usa o atlas de função de luz.
Translúcido usa o atlas de função de luz: desabilitado | Translúcido usa o atlas de função de luz: habilitado |
Quando Translúcido usa o atlas de função de luz estiver habilitado, qualquer material translúcido com Modo de iluminação definido como ForwardShading de superfície poderá receber uma função de luz em sua superfície. Embora a luz seja projetada na superfície de um material translúcido, a função de luz só é visível (em escala de cinza ou colorida) na superfície quando o material está configurado para isso.
Material translúcido com Modo de iluminação definido como "TranslucencyVolume de superfície". | Material translúcido com o modo de iluminação definido como "ForwardShading de superfície". |
Quando Água de camada única usa o atlas de função de luz estiver habilitado, um corpo de água usando um material de água de camada única receberá funções de luz de projetar de uma fonte de luz. Os coeficientes de absorção e de dispersão do material de água de camada única afetam a aparência da função de luz abaixo da superfície da água. Essas propriedades afetam como a luz se propaga no meio. Por padrão, a dispersão de luz azul faz com que as cores no espectro vermelho fiquem silenciadas.
Água de camada única usa o atlas de função de luz: desabilitado | Água de camada única usa o atlas de função de luz: habilitado |
Se estiver usando o material padrão de água de camada única com um corpo de água, você poderá ajustar a rugosidade para tornar a função de luz mais ou menos visível.
Notas adicionais sobre o atlas de função de luz
Estas são algumas observações e variáveis de console adicionais que você pode usar ao trabalhar com o atlas de função de luz:
As funções de luz no atlas de textura serão ladrilhadas e esmaecidas de acordo com os parâmetros configurados no componente de luz.
Um material de função de luz instanciada usará seu próprio espaço independentemente do material que instancia.
Para funções de luz colorida, quando o formato está definido para "Escala de cinza de 8 bits", um formato de textura R8 é usado. Quando definido de outra forma, um formato de textura R8G8B8 é usado.
Variáveis de console úteis:
r.LightFunctionAtlas: use esta opção para habilitar/desabilitar o atlas de função de luz e usar funções de luz legadas.r.LightFunctionAtlas.SlotResolution: define a resolução na qual um material de função de luz é incorporado. Você pode ver a resolução na visualização do atlas de função de luz.r.LightFunctionAtlas.Size: define o tamanho do atlas de função de luz. Um valor de 4 (4x4) significa que haverá espaço máximo para 16 materiais com a função de luz incorporados no atlas. Você pode ver o tamanho do atlas na visualização do atlas de função de luz.