03.04.2013 Views

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

Uma Arquitetura de Suporte a Interações 3D ... - DCA - Unicamp

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

34 Revisão bibliográfica<br />

<strong>de</strong> textura, entre outras.<br />

A aplicação po<strong>de</strong> escolher os atributos <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> textura para armazenar dados arbi-<br />

trários, i.e., não necessariamente contendo coor<strong>de</strong>nadas <strong>de</strong> textura, e interpretá-los no processador <strong>de</strong><br />

vértices como valores numéricos genéricos que variam <strong>de</strong> acordo com o vértice. Entretanto, a saída<br />

do sha<strong>de</strong>r <strong>de</strong> vértices <strong>de</strong>ve ter no mínimo um atributo com semântica <strong>de</strong> posição. Este <strong>de</strong>ve conter<br />

a posição do vértice transformado, em coor<strong>de</strong>nadas homogêneas do espaço <strong>de</strong> recorte. Os <strong>de</strong>mais<br />

atributos são opcionais, e po<strong>de</strong>m ser utilizados para propagar atributos <strong>de</strong> cor para o cálculo <strong>de</strong> ilu-<br />

minação do vértice e atributos <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> textura para o processador <strong>de</strong> fragmentos. Novos<br />

atributos também po<strong>de</strong>m ser calculados e enviados à saída do sha<strong>de</strong>r, usando uma estrutura diferente<br />

daquela utilizada na entrada.<br />

Um sha<strong>de</strong>r <strong>de</strong> vértices recebe como entrada apenas os atributos <strong>de</strong> um vértice <strong>de</strong> cada vez e re-<br />

torna igualmente os atributos <strong>de</strong> um único vértice. Não é possível remover vértices <strong>de</strong> uma primitiva,<br />

nem adicionar novos vértices. O sha<strong>de</strong>r <strong>de</strong> vértices também não tem acesso às informações <strong>de</strong> conec-<br />

tivida<strong>de</strong> do vértice que está sendo processado, a não ser que essa informação seja passada como um<br />

atributo <strong>de</strong>finido pela aplicação, e interpretada no sha<strong>de</strong>r <strong>de</strong> forma correspon<strong>de</strong>nte.<br />

Quando um sha<strong>de</strong>r <strong>de</strong> vértices é utilizado, algumas etapas do fluxo <strong>de</strong> função fixa <strong>de</strong> proces-<br />

samento <strong>de</strong> vértices são <strong>de</strong>sativadas, e as alterações dos estados <strong>de</strong> ren<strong>de</strong>rização que afetam essas<br />

partes só po<strong>de</strong>m ser realizadas via programação <strong>de</strong> sha<strong>de</strong>rs. São elas: 1) Transformação <strong>de</strong> coor<strong>de</strong>-<br />

nadas relativas ao espaço do mundo para o espaço <strong>de</strong> recorte; 2) Normalização <strong>de</strong> vetores; 3) Cálculo<br />

<strong>de</strong> iluminação; 4) Geração <strong>de</strong> coor<strong>de</strong>nadas <strong>de</strong> texturas; 5) Uso <strong>de</strong> planos <strong>de</strong> recorte <strong>de</strong>finidos pela<br />

aplicação (exceto em alguns ambientes <strong>de</strong> execução). Todas as <strong>de</strong>mais partes do fluxo <strong>de</strong> função<br />

fixa não são substituídas. Em particular, continuam sendo válidas as seguintes etapas: 1) Montagem<br />

<strong>de</strong> primitivas; 2) Recorte <strong>de</strong> primitivas pelo volume <strong>de</strong> visualização; 3) Divisão pela coor<strong>de</strong>nada<br />

homogênea; 4) Mapeamento <strong>de</strong> coor<strong>de</strong>nadas na janela <strong>de</strong> visão; 5) Back-face culling.<br />

O sha<strong>de</strong>r <strong>de</strong> vértices tem acesso a um conjunto <strong>de</strong> registradores <strong>de</strong> diferentes propósitos (regis-<br />

tradores <strong>de</strong> entrada, temporários, constantes, <strong>de</strong> en<strong>de</strong>reçamento e saída), com restrições <strong>de</strong> acesso ou<br />

leitura segundo o uso <strong>de</strong> cada registrador (figura 2.4). Em geral, cada registrador é um vetor com<br />

quatro componentes em ponto flutuante <strong>de</strong> até 32 bits, e as operações entre os registradores são reali-<br />

zadas nas quatro componentes simultaneamente. Esses valores po<strong>de</strong>m ser interpretados como pontos<br />

em coor<strong>de</strong>nadas homogêneas (x, y, z, w), valores <strong>de</strong> cor (r, g, b, α), coor<strong>de</strong>nadas <strong>de</strong> textura (s, t, r, q)<br />

ou como 4 escalares in<strong>de</strong>pen<strong>de</strong>ntes. Atualmente, os mo<strong>de</strong>los <strong>de</strong> ambientes <strong>de</strong> execução <strong>de</strong> sha<strong>de</strong>rs<br />

<strong>de</strong> vértices também incluem registradores booleanos e <strong>de</strong> números inteiros.<br />

O sha<strong>de</strong>r <strong>de</strong> vértices po<strong>de</strong> ler os atributos dos vértices a partir <strong>de</strong> até 16 registradores <strong>de</strong> en-<br />

2007]. Isto não <strong>de</strong>ve ser confundido com o termo bitangente, com sentido já bem <strong>de</strong>finido: linha que tangencia uma curva<br />

ou superfície em dois pontos distintos. Nesta tese seguimos Lengyel [2003] e empregamos o termo vetor bitangente.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!