Loading AI tools
Da Wikipédia, a enciclopédia livre
Em computação gráfica, um shader ou sombreador[1] é um programa de computador usado para fazer shading: a produção de níveis de cor apropriadas para uma imagem, ou, na era moderna, também produzir efeitos especiais ou pós-processamento de vídeo. São executados na GPU.[2]
O artigo ou secção Sombreamento de Gouraud deverá ser fundido aqui. (desde março de 2021) Se discorda, discuta sobre esta fusão na página de discussão deste artigo. |
O artigo ou secção GLSL deverá ser fundido aqui. (desde março de 2021) Se discorda, discuta sobre esta fusão na página de discussão deste artigo. |
O uso do termo "shader" foi primeiro introduzido pela Pixar com a versão 3.0 da especificação da interface RenderMan, originalmente publicado em maio de 1988.[3]
Com a evolução das unidades de processamento gráfico, várias bibliotecas de software para processamento de gráficos como o OpenGL e Direct3D começaram a suportar shaders. A primeira GPU com suporte a shaders apenas suportava sombreamento de píxeis, mas sombreamento de vértices foi rapidamente introduzido assim que os desenvolvedores começaram a conhecer a capacidade dos shaders. A primeira placa gráfica com sombreamento de píxeis programáveis foi a Nvidia GeForce 3 (NV20), lançado em 2001.[4] Os shaders geométricos foram primariamente introduzidos com o Direct3D 10 e OpenGL 3.2. Eventualmente, hardwares para gráficos evoluíram para um modelo unificado de sombreamento.
Shaders são programas simples que descrevem o devido tratamento tanto de um vértice quanto de um píxel. Sombreamento de vértice descreve os atributos (posição, coordenadas de texturas, cor, etc.) de um vértice, enquanto em píxeis é descrito o tratamento (cor, profundidade, valores alpha, etc.) do píxel. O sombreamento de vértice é feito em cada vértice primitivo; assim um vértice entra, e outro (atualizado) sai. Então, cada vértice é renderizado em uma série de píxeis (blocos de memória) que vão ser eventualmente ser mandados para uma tela.
Pipelines gráficas básicas seguem esse modelo:
Esses passos são seguidos em uma maneira de transformar dados tridimensionais (as vezes bidimensionais também) em dados bidimensionais úteis para ser desenhado em uma tela. Geralmente, isso é uma enorme matriz de píxeis ou um frame buffer.
Aqui estão três tipos mais comuns de sombreamento (píxel, e vértice), com outros recentemente adicionados. Enquanto placas gráficas mais antigas usam unidades de processamento separadas, placas mais novas usam sombreamento unificado, capaz de executar qualquer tipo de sombreamento.
Sombreamentos 2D agem nas imagens digitais, também são chamados de textura na área de computação gráfica. Eles modificam atributos de píxeis. O sombreamento 2D também é utilizado em partes na geometria 3D. O único sombreamento 2D hoje é o chamado sombreamento de píxeis.
No sombreamento de píxeis, também chamados sombreamento de fragmentos, é feito vários cálculos para cor e outros atributos de cada "fragmento". O tipo mais simples de sombreamento de píxel retorna (saída) um píxel como um valor de cor; tipos mais complexos podem utilizar de múltiplas entradas/saídas.[5] O sombreamento de píxeis variam de simplesmente devolver a mesma cor, apenas aplicando iluminação, até mapeamento de colisões, sombras, destaques espetaculares, translucidez e outros. Eles podem alterar a profundidade do fragmento, ou devolver mais de uma cor se múltiplos alvos de renderização estão ativos.
Sombreamentos 3D agem em modelos 3D mas pode também acessar as cores e texturas utilizadas para desenhar o modelo ou mesh. Sombreamento de Vértices é o mais antigo sombreamento 3D, geralmente aplicando mudanças em uma base por-vértice.
São os mais estabilizados e comuns tipos de sombreamento 3D. Eles percorrem uma vez cada vértice dado para o processador gráfico. O objetivo é transformar cada posição 3D de um vértice em um espaço virtual para uma coordenada 2D quer será mostrada na tela. Sombreadores de vértices podem manipular propriedades como posição, cor e coordenada de texturas, mas não criar novos vértices.
Ray tracing já é suportado pela Microsoft com o DirectX Raytracing, pelo grupo Khronos com o Vulkan, GLSL, e SPIR-V,[6] e também pela Apple com o Metal.
Sombreamentos são escritos para aplicar transformações para uma grande quantidade de elementos ao mesmo tempo, por exemplo, para cada píxel em uma área na tela, ou para cada vértice de um modelo. Várias GPUs modernas apresentam múltiplas pipelines de sombreamento para se adequar ao processamento paralelo.
Um modelo de programação com sombreamento é parecido com uma função de alta ordem para renderização, recebendo os sombreamentos como argumentos, e providenciando um fluxo de dados específico entre os resultados intermediários, habilitando ambos paralelismo de dados (através píxeis, vérticies, etc.) e paralelismo de pipelines (entre os estágios).
A linguagem onde o sombreado é programado depende bastante da plataforma alvo. A linguagem de sombreamento oficial do OpenGL e OpenGL ES é a Linguagem de Sombreamento OpenGL, conhecido como GLSL, e a linguagem oficial do Direct3D é a Linguagem de Sombreamento de Alto Nível, chamado de HLSL.
Plataformas modernas de desenvolvimento de jogos eletrónicos como Unity, Unreal Engine e Godot cada vez mais incluem editores de texto baseado em nós que podem criar sombreamentos sem a necessidade de realmente programar; o usuário é invés disso apresentado com gráficos dirigidos dos nós conectados que permitem direcionar várias texturas, mapas, e funções matemáticas para o valores de saída. A compilação automática então cria um sombreador compilado
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.