Pular para o conteúdo
Lente · TécnicaIntermediário

Bloom

Deixar a luz mais forte do que a tela consegue mostrar vazar para os arredores, com uma cópia desfocada só dos pixels mais claros.

UVTelaTela / pós

Cards

Um exemplo ao vivo para ajustar, aprender e copiar.

Como funciona

Uma lente de câmera e o olho espalham um pouco de toda luz pela área em volta. Ninguém repara nisso numa parede cinza, mas em volta de uma lâmpada, de um letreiro de neon ou do sol a luz espalhada é forte o bastante para aparecer: um halo suave que faz a fonte parecer mais clara que o branco da tela. O bloom imita esse halo, e é o principal motivo para um renderizador guardar cores acima de 1.

A receita tem três partes:

  1. Passada de brilho. Manter só os pixels cujo brilho passa de um limiar, em geral perto de 1, e apagar o resto. Sem valores acima de 1 não há como distinguir uma lâmpada de uma camisa branca, e é por isso que o bloom precisa de uma cena em HDR.
  2. Desfoque. Espalhar o que sobrou com um desfoque largo, quase sempre em meia resolução ou menos, porque o halo é suave e um raio grande em resolução cheia sai caro. As engines encadeiam vários tamanhos e somam todos, para o halo ter um núcleo forte e uma cauda longa e fraca.
  3. Composição. Somar o desfoque de volta ao quadro original e depois aplicar o tone mapping, já que a soma fica ainda mais clara.

Cada parte é uma passada própria, com um render target entre elas, então o bloom é o exemplo clássico de uma cadeia de pós-processamento. Toda engine traz um (o Godot chama de Glow); escrever o seu vale a pena na web, onde nada faz isso por você, ou quando você precisa de um visual que o nativo não dá.

Leitura complementar