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 x de uma superfície em uma dada direção ωo=(θo,ϕo), levando em conta a luz que incide sobre x vindo de todas as direções ωi=(θi,ϕi) de um hemisfério Ω de possíveis direções.

A figura 9.3 ilustra a geometria da equação de renderização, supondo que ωo é a direção até a câmera, e ωi é a direção até uma fonte de luz.

Tanto ωi quanto ωo estão em coordenadas polares em relação a um espaço local no qual o vetor normal n em x corresponde ao eixo z. Assim, ϕi e ϕo são ângulos em torno do eixo z, e θi e θo são ângulos em torno do eixo x do plano que passa pelo ponto x.

Geometria da equação de renderização.

Figura 9.3: Geometria da equação de renderização.

A equação de renderização pode ser escrita como

I(x,ωo)=Ie(x,ωo) +Ωfr(ωi,ωo)I(x,ωi)cosθidωi,

onde

  • I(x,ωo) é a luz refletida de x na direção ωo.

  • Ie(x,ωo) é a luz emitida por x na direção ωo. Esse fator so é maior que zero se x for uma fonte de luz.

  • fr(ωi,ωo) é 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 ωo e a luz incidente na direção ωi.

    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.

  • I(x,ωi) é a luz incidente em x, na direção ωi.

  • cosθi é o cosseno do ângulo formado pelo vetor normal em x e o vetor na direção ωi, e está relacionado à lei do cosseno de Lambert que veremos mais a seguir.

  • Ωdωi é a integral sobre o hemisfério de direções sobre x.

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 x 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 fr(x,ωi,ωo) que varia de acordo com a posição x sobre a superfície.
  • A BSSRDF (bidirectional scattering-surface RDF) é uma BRDF fr(xi,ωi,xo,ωo) que considera os casos em que a luz que incide em um ponto xi da superfície pode ser espalhada no interior do objeto e sair em outra posição xo. Dessa forma é possível simular o fenômeno de espalhamento de subsuperfície (figura 9.4).
Espalhamento de subsuperfície no modelo [Suzanne](https://en.wikipedia.org/wiki/Blender_(software)), renderizado no [Blender](https://www.blender.org/) ([fonte](https://commons.wikimedia.org/wiki/File:Subsurface_scattering.png)).

Figura 9.4: Espalhamento de subsuperfície no modelo Suzanne, renderizado no Blender (fonte).

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:

  • Modelo de reflexão de Phong (seção 9.2);
  • Modelo de reflexão de Blinn–Phong (seção 9.3).

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.

Referências

Kajiya, James T. 1986. “The Rendering Equation.” Computer Graphics 20 (4): 143–50. https://doi.org/10.1145/15886.15902.