Brilhos especulares
O ponto brilhante onde a superfície espelha a luz para a câmera, a partir do vetor refletido ou do vetor médio.
Cards
Um exemplo ao vivo para ajustar, aprender e copiar.
Como funciona
Uma superfície lustrosa não espalha a luz por igual. Parte do que chega nela volta como num espelho levemente borrado,
e você só vê essa parte onde o ângulo de espelho manda a luz para o seu olho: um ponto claro que desliza pela
superfície quando você se move. Esse ponto é o brilho especular. Ao contrário da luz difusa, ele depende de quem olha,
então o shader precisa da direção para a câmera, além da normalUm vetor unitário perpendicular a uma superfície, apontando para onde ela está virada. Iluminação e efeitos Fresnel o comparam com outras direções. Normal Um vetor unitário perpendicular a uma superfície, apontando para onde ela está virada. Iluminação e efeitos Fresnel o comparam com outras direções.
Há dois jeitos clássicos de medir “quão perto do ângulo de espelho este ponto está”:
- Phong reflete a direção da luz em relação à normal com
reflecte compara o resultado com a direção de visão:pow(max(dot(reflect(-l, n), v), 0.0), shininess). - Blinn-Phong pega o vetor médioA direção unitária a meio caminho entre a direção para a luz e a direção para a câmera. Onde ela se alinha com a normal, a superfície espelharia a luz direto para a câmera; os brilhos de Blinn-Phong medem esse alinhamento.Técnica
Vetor médio
A direção unitária a meio caminho entre a direção para a luz e a direção para a câmera. Onde ela se alinha com a normal, a superfície espelharia a luz direto para a câmera; os brilhos de Blinn-Phong medem esse alinhamento.
H = normalize(L + V)entre as direções da luz e da visão e o compara com a normal:pow(max(dot(n, normalize(l + v)), 0.0), shininess).
Os dois são um produto escalarMultiplica dois vetores componente a componente e soma os resultados. Para vetores unitários é o cosseno do ângulo entre eles, de 1 (mesma direção) a -1 (opostos). Produto escalar Multiplica dois vetores componente a componente e soma os resultados. Para vetores unitários é o cosseno do ângulo entre eles, de 1 (mesma direção) a -1 (opostos).dot(a, b) = |a| |b| cos θ
A cor do brilho diz qual é o material. Plásticos, tinta e outros dielétricos refletem a luz sem tingi-la, então o brilho deles fica com a cor da luz enquanto a parte difusa carrega a tinta. Metais tingem o brilho com a própria cor e quase não têm parte difusa. O sombreamento fisicamente baseado troca a curva de potência por uma distribuição de microfacetas como a GGX e acrescenta Fresnel e conservação de energia, mas o vetor médio continua no centro.
Leitura complementar
- dot (abre em uma nova aba)Referência
- Dot product (abre em uma nova aba)Referência
- Basic Lighting (abre em uma nova aba)Artigo
- Normal (geometry) (abre em uma nova aba)Referência
- Normal Mapping (abre em uma nova aba)Artigo
- reflect (abre em uma nova aba)Referência
- refract (abre em uma nova aba)Referência
- Snell's law (abre em uma nova aba)Referência
- Blinn–Phong reflection model (abre em uma nova aba)Referência
- Advanced Lighting (abre em uma nova aba)Artigo
- pow (abre em uma nova aba)Referência
- normalize (abre em uma nova aba)Referência