4.1 Dados gráficos
O processamento de um pipeline gráfico começa com a definição dos dados gráficos pela aplicação. Esses dados são frequentemente representações de objetos – abstrações de objetos do mundo real – dispostos em uma cena virtual tridimensional. Uma cena é tipicamente composta por:
- Objetos com superfícies descritas através de modelos geométricos tais como malhas de triângulos, nuvens de pontos, equações paramétricas ou equações implícitas.
- Propriedades dos materiais que compõem as superfícies dos objetos. Essas propriedades descrevem a forma como uma luz incidente na superfície é refletida, absorvida e/ou transmitida.
- Fontes de luz descritas por informações como intensidade, direção de propagação da luz e fatores de atenuação. Alternativamente, uma fonte de luz pode ser um objeto com superfície de material emissivo.
- Uma câmera virtual descrita por informações que permitem definir um ponto de vista na cena, tais como posição da câmera, orientação e campo de visão.
A câmera virtual é uma abstração de uma câmera ou observador do mundo real. Em uma câmera de verdade, a imagem é formada a partir da energia luminosa que atravessa as lentes e é captada pelo filme ou sensor durante um tempo de exposição. Poderíamos tentar simular de forma precisa o comportamento de uma câmera real, calculando a intensidade de luz de cada comprimento de onda que adentra a abertura da câmera vindo de diferentes direções, atravessa o sistema de lentes e então incide em cada subpixel RGB do sensor da câmera durante um tempo de exposição. Entretanto, uma simulação com esse grau de precisão seria extremamente custosa e inviável mesmo em hardware gráfico atual. Precisamos simplificar de forma significativa este processo, especialmente para aplicações de síntese de imagens em tempo real. Em muitas aplicações, essa aproximação pode ser até mesmo fisicamente incorreta, e a produção da percepção de sombreamento (shading) dos objetos pode ser suficiente.
Para a maioria das aplicações, é comum considerar que a câmera virtual é uma câmera pinhole ideal (figura 4.2). A câmera pinhole é uma câmera que não possui lentes. A luz passa por um pequeno furo (chamado de centro de projeção) e incide sobre um filme ou sensor localizado no fundo da câmera (o plano de imagem). A abertura do campo de visão pode ser ajustada mudando a distância focal, que é a distância entre o centro de projeção e o plano de imagem. Na câmera pinhole ideal, a abertura do furo é infinitamente pequena e as imagens formadas são perfeitamente nítidas (isto é, em foco). Efeitos de difração são ignorados nesse modelo.
Para evitar ter de lidar com a imagem invertida formada no plano de imagem da câmera pinhole, podemos considerar que o plano de imagem está localizado na frente do centro de projeção, o que seria impossível de fazer numa câmera real. Podemos também ajustar arbitrariamente a distância focal sem preocupação com limitações físicas. A distância focal pode até mesmo ser infinita, se desejarmos uma projeção paralela. Por fim, podemos considerar que o plano de imagem é o framebuffer. Nessa configuração, é comum considerar que o centro de projeção corresponde ao olho do observador, como mostra a figura (figura 4.3).
Para determinar a cor de cada pixel do framebuffer para um determinado ponto de vista da câmera virtual, podemos considerar duas abordagens de renderização: ray casting e rasterização. Essas abordagens são apresentadas na seção a seguir.