Iluminação na Unity: Baked, Mixed e Realtime Explicados

Unity lightmapping sem mistério: quando usar luz Baked, Mixed ou Realtime, como fazer o primeiro bake e iluminar objetos que se movem com Light Probes e APV.
Iluminação na Unity: Baked, Mixed e Realtime Explicados
Unity lightmapping é o processo de calcular a luz da cena no editor e gravar o resultado em texturas (os lightmaps), para o jogo não precisar recalcular isso a cada frame. A escolha que decide quase tudo é o modo de cada luz: Baked, Mixed ou Realtime. Acertando o modo pelo tipo de cena, você tem luz bonita e barata; errando, tem cena pesada ou personagem escuro andando num cenário iluminado.
No fim deste post você sabe qual modo usar em cada luz, consegue fazer o primeiro bake com o Progressive Lightmapper do Unity 6.3 LTS e ilumina objetos que se movem com Light Probes ou Adaptive Probe Volumes (APV). Tudo pensado para URP, que é a pipeline de projeto novo hoje.
Os três modos de luz na Unity
Selecione qualquer luz (Directional, Point, Spot) e olhe o campo Mode no Inspector, dentro de General. Ele tem três valores:
- Realtime: a Unity calcula a luz direta e as sombras a cada frame. Mexeu a luz, mudou a cor, abriu uma porta: tudo reage. É o modo mais caro.
- Baked: a luz direta e a indireta são calculadas uma vez no editor e gravadas em lightmaps. Em jogo, a luz praticamente não custa nada. Em troca, ela não muda, e objetos que se movem não projetam sombra dela.
- Mixed: um meio-termo. A parte indireta (a luz que quica nas paredes) vai para o lightmap, e a direta continua em tempo real, com regras de sombra definidas pelo Lighting Mode da cena.
A regra prática que uso:
- Luz que nunca muda e ilumina cenário parado (lâmpada de teto num corredor, luz ambiente de uma caverna): Baked.
- O sol de uma fase externa, que ilumina o cenário e também o personagem: Mixed.
- Lanterna na mão do jogador, luz de tiro, farol de carro, ciclo de dia e noite: Realtime.
Uma cena boa raramente tem tudo num modo só. O normal é uma luz principal Mixed, um punhado de Baked para dar clima e uma ou duas Realtime para o que precisa reagir.
Iluminação baked: lightmaps e Contribute GI
Para um objeto entrar no lightmap, ele precisa ser estático para a iluminação. No Inspector, marque a caixa Static no topo (ou abra a setinha e marque só Contribute GI). Depois, no Mesh Renderer, a seção Lighting mostra Contribute Global Illumination ligado e o campo Receive Global Illumination com duas opções:
- Lightmaps: o objeto recebe a luz gravada numa textura. É o que você quer para chão, paredes, prédios.
- Light Probes: o objeto contribui para a luz da cena (bloqueia, reflete cor), mas recebe a luz dos probes. Serve para objetos pequenos ou cheios de detalhe, que gastariam espaço de lightmap à toa.
Esse segundo caso é a dica que mais economiza tempo de bake. Uma pedra pequena, uma cadeira, um vaso: deixe contribuindo, mas recebendo por probes.
O lightmap precisa de um segundo conjunto de UVs no modelo, sem sobreposição. Se o seu modelo veio do Blender sem esse UV, selecione o arquivo no Project, aba Model, seção Geometry, e marque Generate Lightmap UVs. Clique em Apply. A Unity grava esse UV no canal uv2 da malha.
Mixed Lighting: os modos e o custo
Quando existe pelo menos uma luz Mixed, o comportamento dela depende do Lighting Mode, configurado no Lighting Settings Asset da cena (Window > Rendering > Lighting, aba Scene). A documentação do Unity 6.3 lista quatro:
- Baked Indirect: a luz indireta vai para o lightmap, e todas as sombras são em tempo real. Visual realista com sombra dinâmica, custo médio.
- Shadowmask: além da indireta, as sombras de objetos estáticos são gravadas numa textura de máscara. Só os objetos dinâmicos projetam sombra em tempo real. Mais leve que Baked Indirect.
- Distance Shadowmask: usa sombra em tempo real perto da câmera e a máscara gravada longe. É o mais caro e faz sentido em mundo aberto em hardware médio ou forte.
- Subtractive: tudo gravado, com uma única sombra em tempo real da luz direcional sobre objetos dinâmicos. Barato, sombra de baixa fidelidade. Bom para mobile fraco e visual estilizado, tipo cel shading.
Se você está num jogo para PC com cenário majoritariamente parado, comece em Shadowmask. Se vai rodar em celular modesto, teste Subtractive primeiro e só suba se o visual pedir.
Realtime: quando não tem jeito
Luz Realtime é inevitável em três situações: a luz se move (lanterna, projétil brilhante), a luz muda de forma contínua (ciclo de dia e noite, raio piscando) ou a cena é gerada em tempo de execução (fase procedural, que não existe no editor para ser assada).
O custo da Realtime é proporcional a quantas luzes tocam cada objeto e a quantas projetam sombra. No URP, cada luz extra com sombra entra no atlas de sombras e pesa na GPU. Duas regras seguram o estrago:
- Desligue a sombra (Shadow Type: No Shadows) das luzes Realtime que não precisam dela. Uma luz de tiro que dura 0,1 segundo não precisa de sombra.
- Reduza o Range das Point e Spot ao mínimo que funciona. Luz com alcance enorme toca objetos demais.
A luz indireta em tempo real, que reagiria a tudo sem bake, é outro assunto. A Unity apresentou um sistema novo para isso, e explicamos o estado dele no post sobre iluminação global em tempo real (SCGI) na Unity. Para jogo que você quer terminar agora, bake ainda é o caminho estável.
Se o seu projeto tem ciclo de dia e noite, o sol vai ser Realtime de qualquer jeito. O post sobre ciclo de dia e noite na Unity mostra como girar a luz e trocar o ambiente sem afundar o frame rate.
Light Probes e Adaptive Probe Volumes
Lightmap só funciona em objeto estático. O personagem, os inimigos e a caixa que o jogador empurra não têm lightmap, e sem outra fonte de luz indireta eles parecem recortados do cenário: o corredor está alaranjado pela luz quente e o personagem passa cinza.
Light probes resolvem isso. São pontos no espaço que guardam a luz indireta calculada no bake. Em jogo, o objeto em movimento amostra os probes mais próximos e recebe uma aproximação da luz daquele lugar.
Você tem dois jeitos de colocar probes:
Light Probe Group (manual). GameObject > Light > Light Probe Group. Você edita os pontos na Scene, concentrando onde a luz muda (transição de sombra para luz, porta, janela) e deixando esparso onde a luz é uniforme. Dá controle total e dá trabalho.
Adaptive Probe Volumes (automático). Disponível no URP do Unity 6. A Unity preenche o volume com blocos de probes, mais densos onde tem mais geometria, e cada pixel amostra os oito probes mais próximos. Isso reduz as emendas visíveis entre objetos vizinhos. Para ativar:
- Edit > Project Settings > Quality, abra o Render Pipeline Asset ativo. Em Lighting > Light Probe Lighting, troque Light Probe System para Adaptive Probe Volumes.
- GameObject > Light > Adaptive Probe Volume. No Inspector, coloque Mode em Global para cobrir a cena toda.
- Nos objetos estáticos, mantenha Contribute Global Illumination ligado. Nos que devem receber dos probes, use Receive Global Illumination: Light Probes.
Duas limitações que a documentação deixa claras: dentro de um APV você não posiciona probes à mão, e não dá para converter um Light Probe Group em APV. Projeto novo no Unity 6.3 com URP: comece por APV.
Juntar luz, probes, materiais e performance numa fase inteira, com personagem andando e inimigo reagindo, é exatamente onde quem aprende sozinho costuma travar: cada peça funciona isolada e a cena junta fica escura, pesada ou com bake de uma hora. No curso de Unity a gente monta fases completas com essa ordem de decisão, para você parar de chutar configuração.
Fazendo o primeiro bake
Monte uma cena de teste simples: um chão, quatro paredes com uma janela, uma Directional Light entrando pela janela e uma Point Light dentro da sala. Depois:
- Marque chão e paredes como Static (ou só Contribute GI).
- Coloque a Directional em Mixed e a Point Light em Baked.
- Abra Window > Rendering > Lighting. Na aba Scene, crie um Lighting Settings Asset se a cena não tiver um (botão New).
- Em Mixed Lighting, ligue Baked Global Illumination e escolha o Lighting Mode (Shadowmask para começar).
- Em Lightmapping Settings, deixe Lightmapper em Progressive GPU, que é o padrão no 6.3. Se a máquina não atende os requisitos, troque para Progressive CPU.
- Comece com Lightmap Resolution baixa (10 texels por unidade é um bom ponto de partida para testes) e só suba quando o resultado estiver certo.
- Clique em Generate Lighting.
Sobre o Progressive GPU: a documentação do 6.3 pede GPU com suporte a OpenCL 1.2, pelo menos 2 GB de VRAM dedicada e CPU com SSE4.1. Se a cena precisa de mais VRAM do que a placa tem, o bake fica muito mais lento. Em Mac com Apple Silicon, o lightmapper de CPU não roda no editor, só o de GPU.
Quando terminar, a Unity cria uma pasta com o nome da cena ao lado dela, com os lightmaps e o Lighting Data. Esses arquivos fazem parte do jogo: versione junto.
Desligue o Auto Generate enquanto mexe na cena. Com ele ligado, qualquer alteração dispara um novo bake e o editor fica engasgando.
Erros comuns: manchas no lightmap, UV2 faltando e bake eterno
Manchas escuras ou vazamento de luz nas quinas. Quase sempre é UV de lightmap sobreposto ou com pouca margem. Ative Generate Lightmap UVs ou ajuste a margem (Pack Margin) nas configurações dele. Paredes muito finas também deixam luz passar: dê espessura real a elas.
Objeto todo preto ou todo claro depois do bake. O objeto não tem UV2 e não está gerando. Confira o import do modelo. Outro motivo: ele está marcado para receber por Lightmaps, mas tem escala minúscula no lightmap (Scale In Lightmap perto de 0).
Bake que não termina nunca. Resolução alta demais, objetos pequenos demais contribuindo para GI e bake na CPU. Baixe a resolução, troque detalhes para receber por Light Probes, use o lightmapper de GPU. O post sobre otimização para 60 FPS ajuda a pensar no custo total da cena, não só da luz.
Personagem escuro no cenário claro. Faltam probes. Adicione um Adaptive Probe Volume global ou um Light Probe Group e faça o bake de novo.
Sombra dupla ou sombra sumindo. Luz Mixed com Lighting Mode diferente do que você imaginava. Confira o modo na aba Scene da janela Lighting antes de culpar o modelo.
Próximo passo
Pegue uma fase sua, ou monte a sala de teste acima, e faça três bakes seguidos: um com tudo Realtime, um com a luz principal Mixed em Shadowmask, um com tudo Baked e um APV global. Compare visual e frame rate no Profiler. Essa comparação ensina mais que qualquer tabela.
Depois, volte ao trecho sobre luz Realtime e teste o que acontece com o custo quando você liga sombra em todas as luzes: é o jeito mais rápido de sentir por que a luz assada existe. Com a cena iluminada, o passo natural é dar vida a ela com partículas e efeitos, que é o próximo assunto desta série sobre visual na Unity.
Perguntas frequentes
Qual a diferença entre luz Baked, Mixed e Realtime na Unity?
Baked tem toda a contribuição calculada no editor e gravada em lightmaps, então custa quase nada em jogo, mas não muda. Realtime é calculada a cada frame e reage a tudo, com o maior custo. Mixed junta as duas: a luz indireta vai para o lightmap e a luz direta (e parte das sombras) continua em tempo real.
Por que meu objeto que se move fica escuro numa cena com lightmap?
Lightmap só existe em objeto estático. O que se move precisa receber a luz indireta por Light Probes ou por Adaptive Probe Volumes. Sem probes na cena, o objeto dinâmico só recebe a luz direta das luzes Realtime e Mixed e parece desligado do ambiente.
Light Probe Group ou Adaptive Probe Volumes?
No URP do Unity 6, Adaptive Probe Volumes é o caminho mais prático: a Unity espalha os probes sozinha conforme a geometria e amostra por pixel, o que reduz emendas. Light Probe Group continua útil quando você quer controle manual de cada ponto ou está num projeto que já usa esse sistema.
Por que o bake de iluminação demora tanto?
Normalmente é resolução de lightmap alta demais, objeto pequeno demais marcado como Contribute GI ou bake rodando na CPU. Baixe a Lightmap Resolution, tire o Contribute GI de pedrinhas e detalhes, e use o Progressive GPU se a sua placa atende os requisitos.


