Shading
Na computação gráfica, sombreamento refere-se ao processo de alterar a cor de um objeto/superfície/polígono na cena 3D, baseado em coisas como (mas não limitado a) o ângulo da superfície com as luzes, sua distância das luzes, seu ângulo com a câmera e propriedades materiais (e.Por exemplo, função de distribuição de reflexão bidirecional) para criar um efeito fotorealístico.
Shading é executado durante o processo de renderização por um programa chamado shader.
Ângulo da superfície para uma fonte de luzEditar
Shading altera as cores das faces em um modelo 3D baseado no ângulo da superfície para uma fonte de luz ou fontes de luz.
A primeira imagem abaixo tem as faces da caixa renderizadas, mas todas na mesma cor. As linhas de borda foram renderizadas aqui também o que torna a imagem mais fácil de ver.
A segunda imagem é o mesmo modelo renderizado sem linhas de borda. É difícil dizer onde uma face da caixa termina e a seguinte começa.
A terceira imagem tem sombreamento habilitado, o que torna a imagem mais realista e facilita a visualização de qual face é qual.
Tipos de iluminaçãoEdit
Quando um sombreador calcula a cor do resultado, utiliza um modelo de iluminação para determinar a quantidade de luz reflectida em pontos específicos da superfície. Diferentes modelos de iluminação podem ser combinados com diferentes técnicas de sombreamento – enquanto a iluminação diz quanta luz é refletida, o sombreamento determina como essa informação é usada para calcular o resultado final. Pode, por exemplo, calcular a iluminação apenas em pontos específicos e usar a interpolação para preencher o resto. O sombreador também pode decidir sobre quantas fontes de luz devem ser levadas em conta etc.
Iluminação ambienteEditar
Uma fonte de luz ambiente representa uma fonte de luz omni-direcional, de intensidade fixa e cor fixa que afeta todos os objetos na cena igualmente (é omni-presente). Durante a renderização, todos os objetos na cena são iluminados com a intensidade e cor especificadas. Este tipo de fonte de luz é usado principalmente para fornecer à cena uma visão básica dos diferentes objetos nela contidos. Este é o tipo de iluminação mais simples de implementar, e modela como a luz pode ser espalhada ou refletida muitas vezes, produzindo assim um efeito uniforme.
A iluminação ambiente pode ser combinada com a oclusão ambiente para representar como cada ponto da cena está exposto, afetando a quantidade de luz ambiente que ela pode refletir. Isto produz uma iluminação difusa e não direcional ao longo da cena, não produzindo sombras claras, mas com áreas fechadas e abrigadas escurecidas. O resultado é geralmente visualmente semelhante a um dia nublado.
Iluminação pontualEdit
Luz origina-se de um único ponto e se espalha para fora em todas as direções.
SpotlightingEdit
Modela um holofote: a luz origina-se de um único ponto e se espalha para fora em um cone.
Iluminação de áreaEdit
Luz origina-se de uma pequena área em um único plano. (Um modelo mais realista que uma fonte de luz pontual.)
Iluminação direcionalEdit
Uma fonte de luz direcional ilumina todos os objetos igualmente de uma determinada direção, como uma luz de área de tamanho infinito e distância infinita da cena; há sombreamento, mas não pode haver nenhuma distância falloff. Isto é como o sol.
Distância falloffEdit
Teoricamente, duas superfícies que são paralelas são iluminadas virtualmente a mesma quantidade de uma fonte de luz distante e desbloqueada como o sol. O efeito de distância falloff produz imagens que têm mais sombras e assim seria realista para fontes de luz proximais.
A imagem da esquerda não usa falloff de distância. Note que as cores nas faces frontais das duas caixas são exatamente as mesmas. Pode parecer que existe uma ligeira diferença onde as duas faces se sobrepõem directamente, mas isto é uma ilusão óptica causada pela borda vertical abaixo onde as duas faces se encontram.
A imagem da direita utiliza o falloff à distância. Note que a face frontal da caixa mais próxima é mais brilhante do que a face frontal da caixa traseira. Além disso, o chão vai de claro para escuro à medida que se afasta.
CalculationEdit
Distance falloff can be calculated in a number of ways:
- Power of the distance – Para um determinado ponto a uma distância x da fonte de luz, a intensidade de luz recebida é proporcional a 1/xn.
- None (n = 0) – A intensidade de luz recebida é a mesma independentemente da distância entre o ponto e a fonte de luz.
- Linear (n = 1) – Para um determinado ponto a uma distância x da fonte de luz, a intensidade de luz recebida é proporcional a 1/x.
- Quadrática (n = 2) – É assim que a intensidade de luz diminui na realidade se a luz tiver um caminho livre (ou seja, sem nevoeiro ou qualquer outra coisa no ar que possa absorver ou dispersar a luz). Para um determinado ponto a uma distância x da fonte luminosa, a intensidade da luz recebida é proporcional a 1/x2.
- Qualquer número de outras funções matemáticas também pode ser usado.
Técnicas de sombreamentoEditar
Sombrecimento de uma superfície normal é frequentemente necessário para o cálculo da iluminação. As normais podem ser pré-computadas e armazenadas para cada vértice do modelo.
Sombreamento planoEdit
Aqui, a iluminação é avaliada apenas uma vez para cada polígono (geralmente para o primeiro vértice do polígono, mas às vezes para o centróide para as malhas triangulares), com base na superfície do polígono normal e na suposição de que todos os polígonos são planos. A cor computada é usada para todo o polígono, fazendo com que os cantos pareçam afiados. Isto é normalmente usado quando técnicas mais avançadas de sombreamento são muito caras em termos computacionais. Os destaques especulares são mal apresentados com sombreamento plano: Se por acaso houver um grande componente especular no vértice representativo, esse brilho é desenhado uniformemente sobre toda a face. Se um destaque especular não cai sobre o ponto representativo, ele é perdido completamente. Consequentemente, o componente de reflexão especular normalmente não é incluído no cálculo do sombreamento plano.
Sombreamento suaveEditar
Em contraste com o sombreamento plano onde as cores mudam descontinuamente nas bordas do polígono, com sombreamento suave a cor muda de pixel para pixel, resultando em uma transição suave de cor entre dois polígonos adjacentes. Normalmente, os valores são primeiro calculados nos vértices e a interpolação bilinear é usada para calcular os valores dos pixels entre os vértices dos polígonos. Tipos de sombreamento suave incluem sombreamento Gouraud e Phong.
Sombreamento GouraudEdit
- Determinar o normal em cada vértice do polígono.
- Aplicar um modelo de iluminação em cada vértice para calcular a intensidade luminosa do vértice normal.
- Interpolar as intensidades dos vértices usando interpolação bilinear sobre o polígono de superfície.
Problemas:
- Li>Due à iluminação sendo computada apenas nos vértices, as imprecisões (especialmente de destaques especulares em grandes triângulos) podem tornar-se demasiado aparentes.
- T-junções com polígonos adjacentes podem por vezes resultar em anomalias visuais. Em geral, as junções em T devem ser evitadas.
Phong shadingEdit
Phong shading é similar ao Gouraud shading, exceto que ao invés de interpolar as intensidades de luz, os normais são interpolados entre os vértices e a iluminação é avaliada por pixel. Assim, os destaques especulares são computados muito mais precisamente do que no modelo de sombreamento de Gouraud.
- Compute um N normal para cada vértice do polígono.
- Utilizando a interpolação bilinear compute um Ni normal, para cada pixel. (Normal tem que ser renormalizado cada vez.)
- Aplique um modelo de iluminação a cada pixel para calcular a intensidade luminosa de Ni.
Sombreamento diferidoEditar
Sombreamento diferido é uma técnica de sombreamento pela qual o cálculo do sombreamento é diferido para um estágio posterior através da renderização em duas passagens, aumentando potencialmente a performance não descartando pixels com sombreamento expensivo. A primeira passa apenas captura parâmetros de superfície (tais como profundidade, normais e parâmetros materiais), a segunda executa o sombreamento real e calcula as cores finais.:884
Outras abordagensEdit
Both Gouraud sombreamento e Phong sombreamento pode ser implementado usando interpolação bilinear. Bishop e Weimer propuseram usar uma expansão da série Taylor da expressão resultante da aplicação de um modelo de iluminação e interpolação bilinear das normas. Assim, foi utilizada a interpolação polinomial de segundo grau. Este tipo de interpolação biquadrática foi mais elaborado por Barrera et al., onde um polinômio de segunda ordem foi usado para interpolar a luz difusa do modelo de reflexão Phong e outro polinômio de segunda ordem foi usado para a luz especular.
Interpolação linear esférica (Slerp) foi usado por Kuij e Blake para computar tanto a normal sobre o polígono, quanto o vetor na direção da fonte de luz. Uma abordagem semelhante foi proposta por Hast, que utiliza a interpolação quaterniônica dos normais com a vantagem de que o normal sempre terá comprimento unitário e a normalização computacionalmente pesada é evitada.
Flat vs. smooth shadingEdit
Flat | Smooth |
---|---|
Uses the same color for every pixel in a face – usually the color of the first vertex | Smooth shading uses linear interpolation of either colors or normals between vertices |
Edges appear more pronounced than they would on a real object because in reality almost all edges are somewhat round | The edges disappear with this technique |
Same color for any point of the face | Each point of the face has its own color |
Individual faces are visualized | Visualize underlying surface |
Not suitable for smooth objects | Suitable for any objects |
Less computationally expensive | More computationally expensive |