segunda-feira, 14 de junho de 2010

Shaders

Um shader é um conjunto de instruções para calcular efeitos de renderização no hardware gráfico (GPU).



Contextualização
Quando um aplicativo executa funções gráficas (utilizando uma devida API), a CPU pega as informações e redireciona para a GPU (unidade de processamento gráfico). A partir desse ponto, os dados entram no pipeline gráfico.
Essas etapas consistem basicamente em:
-tratar pontos do modelo
-gerar as linhas e polígonos
-rasterizar e interpolar
-gerar imagem final (pixels)



Shader

exemplo sem shader e com shader, respectivamente

O shader consiste em modificar o pipeline gráfico em dois pontos: Vértices e Pixels. No diagrama acima pode ser visto como 'Programmable Vertex Processor' e 'Programmable Pixel Processor'.
No tratamento do vértice pode-se mudar a cor, vetor de reflexão, posição, etc. Tem melhor desempenho que o outro. No tratamento de pixels pode fazer alterações de cor e posição, é mais pesado pois executa em todos os pixels da imagem.

Como programar Shader?
Primeiro é necessário verificar se o programa usado (modelador 3d, game engine) tem suporte a shader e como importa-los. Depois pode-se programar em HLSL (específico do DirectX), GLSL (específico do OpenGL) ou NVidia's Cg (funciona como HLSL + GLSL).
No site da NVidia tem bons manuais sobre Cg. Também recomendo as video aulas do Cg Academy. Além disso, com uma boa pesquisa no Google pode-se achar bons tutoriais.


Nenhum comentário:

Postar um comentário