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 \(\mathbf{x}\) de uma superfície em uma dada direção \(\omega_o=(\theta_o, \phi_o)\), levando em conta a luz que incide sobre \(\mathbf{x}\) vindo de todas as direções \(\omega_i=(\theta_i, \phi_i)\) sobre um hemisfério \(\Omega\).

A figura 9.3 ilustra a geometria da equação de renderização, supondo que \(\omega_o\) é a direção até a câmera, e \(\omega_i\) é a direção até uma fonte de luz.

Tanto \(\omega_i\) quanto \(\omega_o\) estão em coordenadas polares em relação a um espaço local no qual o vetor normal \(\mathbf{n}\) em \(\mathbf{x}\) corresponde ao eixo \(z\) positivo. Assim, \(\phi_i\) e \(\phi_o\) são ângulos em torno do eixo \(z\), e \(\theta_i\) e \(\theta_o\) são ângulos em torno do eixo \(x\) do plano que passa pelo ponto \(\mathbf{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_r(\mathbf x, \omega_{\text{o}}) = I_{\text{e}}(\mathbf x, \omega_{\text{o}}) \ + \int_{\Omega} f_{\text{r}}(\omega_{\text{i}}, \omega_{\text{o}}) I_i(\mathbf x, \omega_{\text{i}}) \cos \theta_i \;\mathrm{d} \omega_{\text{i}}, \]

onde

  • \(I_r(\mathbf x, \omega_{\text{o}})\) é a luz refletida de \(\mathbf{x}\) na direção \(\omega_o\).

  • \(I_e(\mathbf x, \omega_{\text{o}})\) é a luz emitida por \(\mathbf{x}\) na direção \(\omega_o\). Esse fator so é maior que zero se \(\mathbf{x}\) for uma fonte de luz.

  • \(f_{\text{r}}(\omega_{\text{i}}, \omega_{\text{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 \(\omega_o\) e a luz incidente na direção \(\omega_i\).

    Cada tipo de material possui sua própria BRDF, pois cada material reflete e absorve a luz de uma maneira distinta. A BRDF pode ser modelada matematicamente através de um modelo de reflexão, ou adquirida de materiais reais através de instrumentos de radiometria, como o gonioreflectômetro.

    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. Isso garante que a iluminação seja o resultado de um equilíbrio energético das interreflexões de luz entre os diferentes objetos de uma cena.

  • \(I_i(\mathbf x, \omega_{\text{i}})\) é a luz incidente em \(\mathbf{x}\), vindo na direção oposta a \(\omega_i\).

  • \(\cos \theta_i\) é o cosseno do ângulo formado pelo vetor normal em \(\mathbf{x}\) e o vetor na direção \(\omega_i\), e está relacionado à lei do cosseno de Lambert que veremos mais a seguir.

  • \(\int_{\Omega}\dots \mathrm{d} \omega_{\text{i}}\) é a integral sobre o hemisfério de direções sobre \(\mathbf{x}\).

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).

Observação
  • A equação de renderização possui uma dependência espectral, omitida aqui por simplicidade (\(I_r\), \(I_e\), \(f_r\) e \(I_i\) possuem um parâmetro adicional \(\lambda\) correspondente ao comprimento de onda). Para gerar uma imagem colorida, resolvemos a equação três vezes, uma para cada componente de cor RGB, como se o espectro de luz fosse amostrado três vezes ou integrado sobre os comprimentos de onda correspondentes aos canais RGB.
  • A equação também tem uma dependência temporal (parâmetro de tempo \(t\)). Entretanto, para simplificar, vamos considerar que a equação é avaliada apenas para o instante que corresponde ao quadro atual, isto é, a iluminação do quadro atual não depende da iluminação nos quadros anteriores.
  • A equação de renderização tem uma natureza recursiva: a luz que incide sobre \(\mathbf{x}\) e vem de cada direção de \(\Omega\) é, ela mesma, a luz refletida de algum outro lugar, que pode ser uma outra superfície ou fonte de luz.

A BRDF pode assumir formas diferentes de \(f_{\text{r}}(\omega_{\text{i}}, \omega_{\text{o}})\). Por exemplo:

  • A SVBRDF (spatially varying BRDF) é uma BRDF \(f_{\text{r}}(\mathbf{x}, \omega_{\text{i}}, \omega_{\text{o}})\) que varia de acordo com a posição \(\mathbf{x}\) sobre a superfície.
  • A BSSRDF (bidirectional scattering-surface RDF) é uma BRDF \(f_{\text{r}}(\mathbf{x}_i, \omega_{\text{i}}, \mathbf{x}_o, \omega_{\text{o}})\) que considera os casos em que a luz que incide em um ponto \(\mathbf{x}_i\) da superfície pode ser espalhada no interior do objeto e sair em outra posição \(\mathbf{x}_o\). 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 simplificação são chamados de modelos de iluminação local.

Descreveremos dois modelos de reflexão comumente utilizados em iluminação local 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 correspondem a aproximações empíricas de uma BRDF que simula a reflexão especular de materiais que se parecem com plástico. São modelos inadequados para produzir resultados realistas, e daí resulta, entre outros motivos, o aspecto artificial de muitas imagens sintetizadas em computador. Por outro lado, tais 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.