9.1 Equação de renderização
Para produzir a imagem de uma cena iluminada por fontes de luz virtuais, precisamos determinar a quantidade de luz que incide sobre cada pixel do plano de imagem. Isso depende da forma como a luz é refletida entre as diferentes superfícies da cena até finalmente atingir o pixel no plano de imagem. Essa interação da luz pode ser descrita matematicamente através de uma equação de renderização (Kajiya 1986).
A equação de renderização descreve a intensidade luminosa total que sai de um ponto de uma superfície em uma dada direção , levando em conta a luz que incide sobre vindo de todas as direções de um hemisfério de possíveis direções.
A figura 9.3 ilustra a geometria da equação de renderização, supondo que é a direção até a câmera, e é a direção até uma fonte de luz.
Tanto quanto estão em coordenadas polares em relação a um espaço local no qual o vetor normal em corresponde ao eixo . Assim, e são ângulos em torno do eixo , e e são ângulos em torno do eixo do plano que passa pelo ponto .
Figura 9.3: Geometria da equação de renderização.
A equação de renderização pode ser escrita como
onde
é a luz refletida de na direção .
é a luz emitida por na direção . Esse fator so é maior que zero se for uma fonte de luz.
é chamada de BRDF (bidirectional reflectance distribution function) ou função de distribuição de reflectância bidirecional, e corresponde à razão entre a luz refletida na direção e a luz incidente na direção .
Cada tipo de material possui sua própria BRDF. A BRDF pode ser modelada matematicamente ou adquirida de materiais do mundo físico através de instrumentos de radiometria.
Para que os resultados sejam fisicamente plausíveis, a BRDF deve respeitar a lei de conservação de energia, isto é, o total de luz refletida e absorvida deve corresponder ao total de luz incidente.
é a luz incidente em , na direção .
é o cosseno do ângulo formado pelo vetor normal em e o vetor na direção , e está relacionado à lei do cosseno de Lambert que veremos mais a seguir.
é a integral sobre o hemisfério de direções sobre .
A equação de renderização possui uma dependência espectral. Se quisermos gerar uma imagem colorida, precisamos resolver a equação três vezes, uma para cada componente de cor RGB.
Note que a equação de renderização tem natureza recursiva: a luz que incide sobre e vem de cada direção de é, ela mesma, a luz refletida de algum outro lugar, que pode ser uma outra superfície ou fonte de luz.
Cada superfície reflete parte da luz incidente e absorve outra parte. A iluminação é, portanto, o resultado de um equilíbrio energético das interreflexões de luz entre os diferentes objetos de uma cena.
O objetivo dos métodos de iluminação global é resolver a equação de renderização. Isso pode ser feito, por exemplo, traçando os diferentes caminhos da luz (como nas técnicas de traçado de raios baseadas no método de Monte Carlo), ou resolvendo a equação usando métodos de elementos finitos (como na técnica de radiosidade).
A BRDF também pode assumir diferentes formas. Por exemplo:
- A SVBRDF (spatially varying BRDF) é uma BRDF que varia de acordo com a posição sobre a superfície.
- A BSSRDF (bidirectional scattering-surface RDF) é uma BRDF que considera os casos em que a luz que incide em um ponto da superfície pode ser espalhada no interior do objeto e sair em outra posição . Dessa forma é possível simular o fenômeno de espalhamento de subsuperfície (figura 9.4).
Solucionar a equação de renderização pode ser um processo muito custoso. Para conseguir simular em tempo real a iluminação de superfícies, precisamos adotar modelos de iluminação que aproximem e simplifiquem a equação.
Uma possível abordagem de simplificação da equação de renderização consiste em ignorar as interreflexões de luz entre os objetos da cena e supor que a luz incidente em um ponto de uma superfície é determinada unicamente pela luz que vem de uma ou mais fontes de luz. Em outras palavras, ignora-se a iluminação indireta e considera-se apenas a iluminação direta entre cada ponto da superfície e a(s) fonte(s) de luz. Modelos de iluminação que seguem essa suposição são chamados de modelos de iluminação local.
Descreveremos dois modelos de iluminação local frequentemente utilizados em renderização em tempo real:
Esses modelos são simples o suficiente para serem implementados no vertex shader ou fragment shader, como veremos nas seções 9.5 e 9.6.