Pipeline de visualização
O caminho do vértice até ao ecrã, fase a fase, com um exemplo numérico completo.
Uma imagem 3D nasce de números: vértices, matrizes e luzes. A pipeline de visualização é a sequência fixa de etapas que transforma esses números em píxeis. Percebê-la é perceber a cadeira inteira, porque cada página seguinte explica uma destas etapas em detalhe. A ideia é simples: cada vértice viaja por vários sistemas de coordenadas até chegar ao ecrã, e em cada paragem acontece uma operação bem definida.
As aplicações primeiro
Computação Gráfica serve para fazer imagens que não existem: videojogos, efeitos visuais, visualização científica e médica, CAD, interfaces. Todas partilham o mesmo problema, que é desenhar depressa cenas descritas por geometria. A pipeline existe para resolver esse problema sempre da mesma maneira, de modo que o hardware gráfico consiga acelerar cada etapa.
As etapas do vértice
Segue um vértice desde o modelo até ao dispositivo:
- Espaço do objeto. O vértice nasce nas coordenadas locais do modelo, tal como foi modelado.
- Transformação de modelação. Uma matriz coloca o objeto na cena (posição, orientação, escala). O vértice passa ao espaço do mundo.
- Transformação de vista. Outra matriz move o mundo para a frente da câmara. O vértice passa ao espaço da câmara, onde a câmara está na origem a olhar para uma direção fixa.
- Projeção. A matriz de projeção (perspetiva ou ortográfica) deforma o volume visível para um cubo canónico. O resultado está em coordenadas de recorte (clip), com quatro componentes .
- Recorte (clipping). Tudo o que fica fora do cubo em cada eixo é cortado. É aqui que desaparece o que está atrás da câmara ou fora do enquadramento.
- Divisão perspética. Divide-se por : . O resultado está em coordenadas normalizadas (NDC), dentro do cubo .
- Transformação de viewport. Mapeiam-se as NDC para coordenadas do dispositivo, os píxeis da janela.
Depois disto vem a rasterização, que converte a geometria projetada em fragmentos e depois em píxeis, e o teste de profundidade, que decide o que fica à frente.
Exemplo completo
Um vértice sai da projeção em coordenadas de recorte . Primeiro verifica o recorte: , e , por isso passa. A divisão por dá as NDC:
Todas as componentes estão em , logo o ponto está dentro do volume visível. Numa janela de píxeis, a transformação de viewport dá:
O vértice acende perto do píxel , à direita e um pouco acima do centro. Repara que a terceira coordenada, , não se perde: guardada no buffer de profundidade, decide se este fragmento fica à frente ou atrás de outro que caia no mesmo píxel.
O que a pipeline esconde
Cada etapa tem parâmetros que vais aprender a controlar: a matriz de modelação e a câmara vivem nas transformações geométricas, a luz entra na iluminação e o fim do caminho é a rasterização 2D. Quando uma imagem sai errada, a pergunta útil é sempre em que etapa o número se estragou.