Saltar para o conteúdo

Sombreador

Origem: Wikipédia, a enciclopédia livre.
Shaders são comumente usados para produzir iluminação e sombreado emmodelagem 3D.
Essa imagem ilustra oSombreamento de Phong,um dos primeiros modelos de shading de computador desenvolvido.

Emcomputação gráfica,umshaderousombreador[1]é umprograma de computadorusado para fazershading:a produção de níveis de cor apropriadas para uma imagem, ou, na era moderna, também produzirefeitos especiaisoupós-processamento de vídeo.São executados naGPU.[2]

O uso do termo "shader" foi primeiro introduzido pelaPixarcom a versão 3.0 daespecificação da interface RenderMan,originalmente publicado em maio de 1988.[3]

Com a evolução dasunidades de processamento gráfico,váriasbibliotecas de softwarepara processamento de gráficos como oOpenGLeDirect3Dcomeçaram a suportar shaders. A primeira GPU com suporte a shaders apenas suportavasombreamento de píxeis,massombreamento de vérticesfoi 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 NvidiaGeForce 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 ummodelo unificado de sombreamento.

Shaders são programas simples que descrevem o devido tratamento tanto de umvérticequanto de umpí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,valoresalpha,etc.) do píxel. O sombreamento de vértice é feito em cada vérticeprimitivo;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áficasbásicas seguem esse modelo:

  • A CPU manda instruções (compilados em linguagens de sombreamento) e dados geométricos para a unidade de processamento gráfico (GPU), localizado na placa gráfica.
  • Dentro do sombreamento de um vértice, sua geometria é transformada.
  • Se o sombreamento geométrico está na GPU e ativo, algumas mudanças geométricas são feitas na cena
  • Se o sombreamento de tesselação está na GPU e ativo, a geometria na cena pode ser subdividida.
  • A geometria calculada é então triangulada (subdividida em triângulos).
  • Os triângulos são então divididos em fragmentos quádruplo (2 x 2 fragmentos primitivos)
  • Os fragmentos quádruplos são então modificados de acordo com o sombreamento de fragmentos
  • O teste de profundidade é então feito; os fragmentos que passarem serão então mandatados para serem desenhados na tela e podem ser misturados em umframe buffer.

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 usamsombreamento unificado,capaz de executar qualquer tipo de sombreamento.

Sombreamentos 2D

[editar|editar código-fonte]

Sombreamentos 2D agem nasimagens 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 nageometria 3D.O único sombreamento 2D hoje é o chamado sombreamento de píxeis.

Sombreamento de píxeis

[editar|editar código-fonte]

No sombreamento de píxeis, também chamados sombreamento defragmentos,é 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 decor;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 aplicandoiluminação,atémapeamento de colisões,sombras,destaques espetaculares,translucideze 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

[editar|editar código-fonte]

Sombreamentos 3D agem emmodelos 3Dmas pode também acessar as cores e texturas utilizadas para desenhar o modelo oumesh.Sombreamento de Vértices é o mais antigo sombreamento 3D, geralmente aplicando mudanças em uma base por-vértice.

Sombreamento de vértices

[editar|editar código-fonte]

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 tracingjá é suportado pelaMicrosoftcom oDirectX Raytracing,pelogrupo Khronoscom oVulkan,GLSL,e SPIR-V,[6]e também pelaApplecom o Metal.

Processamento paralelo

[editar|editar código-fonte]

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últiplaspipelinesde sombreamento para se adequar aoprocessamento paralelo.

Um modelo de programação com sombreamento é parecido com umafunção de alta ordempara renderização, recebendo os sombreamentos como argumentos, e providenciando umfluxo de dadosespecífico entre os resultados intermediários, habilitando ambosparalelismo 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 eOpenGL ESé aLinguagem de Sombreamento OpenGL,conhecido como GLSL, e a linguagem oficial do Direct3D é aLinguagem de Sombreamento de Alto Nível,chamado de HLSL.

Editores de sombreamento

[editar|editar código-fonte]

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

Referências

  1. «Designer de sombreador».Microsoft Developer Network.Consultado em 1 de Fevereiro de 2016
  2. DEMARTINI, FELIPE (2 de Março de 2011).«Shaders: o que são e para que servem?».Tecmundo Games.Consultado em 1 de Fevereiro de 2016
  3. «A Especificação da Interface RenderMan (em inglês)»
  4. Lilly, Paul (19 de maio de 2009).«Do voodoo para a GeForce: Incrível história dos Gráficos 3D (em inglês)».PC GAMER
  5. «Tutorial GLSL - Sombreamento de fragmentos (em inglês)».9 de junho de 2011
  6. «Lançamento da última especificação do Vulkan Ray Tracing (em inglês)».Blog. Khronos Group

Ligações externas

[editar|editar código-fonte]
OCommonspossui umacategoriacom imagens e outros ficheiros sobreSombreador
Ícone de esboço Este artigo sobrecomputação gráficaé umesboço.Você pode ajudar a Wikipédiaexpandindo-o.