Melhor resposta
Shaders são programas especializados usados por hardware gráfico para produzir imagens. Eles geralmente são subdivididos em programas menores que lidam com diferentes aspectos do processo de renderização do hardware.
Existem várias variedades diferentes, mas os mais comuns são pixel e vertex shaders.
Os O sombreador de vértice é responsável por aplicar quaisquer alterações à geometria de entrada. Normalmente, isso significa projetar geometria 3-d no plano de projeção 2-d da imagem de saída, mas às vezes você pode adicionar algum tipo de movimento ou deformação procedural à geometria aqui também.
O sombreador de pixel leva a saída do sombreador de vértice e gera os pixels que aparecerão na imagem final. Na maioria das vezes, isso se baseia em alguma variação da equação de renderização , comparando a direção do pixel com as direções das fontes de luz e as propriedades da superfície , mas pode ser qualquer coisa, desde uma função de ruído aleatório a uma simulação complexa ou traçado de raio.
A parte disso que é mais diferente da programação comum é que os sombreadores de vértice e de pixel são extremamente paralelizado. Cada sombreador de vértice será executado em cada vértice nos dados de entrada ao mesmo tempo; cada sombreador de pixel será executado em todos os pixels da imagem final ao mesmo tempo. Isso significa que é difícil fazer algo em um pixel com base no estado de outro – todos os pixels estarão funcionando ao mesmo tempo, independentemente uns dos outros. Os efeitos que precisam estar cientes do contexto geralmente precisam executar vários sombreadores de pixels um após o outro, armazenando os resultados em imagens temporárias.
Isso fornece uma visão geral decente e muito básica de como funciona:
Resposta
Um “pixel shader” (que é um nome ruim para um “fragment shader”) é um pequeno programa que roda em paralelo muitas vezes na GPU para determinar a cor dos fragmentos. Em termos básicos, os fragmentos são conceitualmente muito semelhantes aos pixels, daí o nome confusão.
Quando a geometria é enviada para desenho, os vértices são transformados pelo “sombreador de vértice”. O pipeline construirá primitivas como triângulos ou linhas, e depois de serem projetadas na tela e cortadas, o rasterizador trabalhará todos os pixels que são tocados e interpola quaisquer valores entre vértices como cores, coordenadas de textura ou normais . O sombreador de fragmento é executado para cada um dos fragmentos para determinar a cor final. Outras operações, como o teste de profundidade / alfa / estêncil, são realizadas e, em seguida, os fragmentos podem possivelmente ser calculados juntos no caso de suavização de várias amostras, antes de finalmente se tornarem cores de pixel reais a serem gravadas ou combinadas no buffer de tela.
Imagem tirada aqui .