Pular para o conteúdo
Luz · TécnicaIniciante

Difusa (Lambert)

Brilho conforme quanto a superfície encara a luz de frente, igual de qualquer ângulo de visão.

NormalSuperfície

Cards

Um exemplo ao vivo para ajustar, aprender e copiar.

Como funciona

A luz difusa é a parte suave e fosca do sombreamento: a luz que a superfície espalha igualmente em todas as direções, por isso ela parece a mesma onde quer que a câmera esteja. O brilho depende de uma coisa só, o ângulo entre a superfície e a luz que chega, e a lei dos cossenos de Lambert diz como: ele segue o cosseno desse ângulo.

Num shader esse cosseno é um único produto escalar entre a normal unitária da superfície e a direção unitária para a luz, cortado em zero para que superfícies viradas para o outro lado não recebam luz nenhuma em vez de luz negativa:

float diffuse = max(dot(n, toLight), 0.0);
vec3 color = albedo * (lightColor * diffuse + ambient);

Essa linha é a base de quase todo modelo de iluminação. As engines a rodam uma vez por luz e somam os resultados; o toon a corta em faixas; os brilhos especulares ficam por cima dela; o sombreamento fisicamente baseado a divide por π e a junta a um termo especular de microfacetas. Acertá-la se resume a três conferências: os dois vetores estão normalizados, os dois estão no mesmo espaço, e o vetor da luz aponta da superfície para a luz, não no sentido em que a luz viaja.

Só a difusa parece giz ou argila. Falta a ela tudo o que depende de quem olha: brilho, contornos, reflexos. Isso fica com as técnicas de brilhos especulares e Fresnel.

Leitura complementar