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