Tipos de luz
A propriedade light type define o tipo de fonte de luz que você está usando. Há três tipos de luzes no Direct3D - luzes de ponto, holofotes e luzes direcionais. Cada tipo ilumina objetos em uma cena de maneira diferente, com níveis variados de sobrecarga computacional.
Ponto de luz
As luzes pontuais têm cor e posição dentro de uma cena, mas não uma direção única. Eles emitem luz igualmente em todas as direções, conforme mostrado na ilustração a seguir.
Uma lâmpada é um bom exemplo de uma luz pontual. As luzes pontuais são afetadas pela atenuação e alcance e iluminam uma malha vértice por vértice. Durante a iluminação, o Direct3D usa a posição da luz pontual no espaço do mundo e as coordenadas do vértice que está sendo iluminado para derivar um vetor para a direção da luz e a distância percorrida. Ambos são usados, juntamente com a normal do vértice, para calcular a contribuição da luz para a iluminação da superfície.
Luz direcional
As luzes direcionais têm apenas cor e direção, não posição. Eles emitem luz paralela. Isso significa que toda a luz gerada por luzes direcionais viaja por uma cena na mesma direção. Imagine uma luz direcional como uma fonte de luz a uma distância quase infinita, como o sol. As luzes direcionais não são afetadas pela atenuação ou intervalo, portanto, a direção e a cor especificadas são os únicos fatores considerados quando o Direct3D calcula as cores do vértice. Devido ao pequeno número de fatores de iluminação, essas são as luzes menos intensivas computacionalmente para usar.
Holofote
Os holofotes têm cor, posição e direção em que emitem luz. A luz emitida por um holofote é composta por um cone interno brilhante e um cone externo maior, com a intensidade da luz diminuindo entre os dois, conforme mostrado na ilustração a seguir.
Os holofotes são afetados pelo enfraquecimento, atenuação e alcance. Esses fatores, bem como a distância que a luz percorre para cada vértice, são considerados ao calcular os efeitos de iluminação para objetos em uma cena. Calcular esses efeitos para cada vértice torna os holofotes os mais demorados computacionalmente de todas as luzes no Direct3D.
Os valores de Falloff, Theta e Phi são usados somente por holofotes. Esses valores controlam o tamanho ou o tamanho dos cones interno e externo de um objeto de holofote e como a luz diminui entre eles.
Theta é o ângulo radiano do cone interno do holofote e o valor Phi é o ângulo do cone externo de luz. O enfraquecimento controla como a intensidade da luz diminui entre a borda externa do cone interno e a borda interna do cone externo. A maioria dos aplicativos define Falloff como 1.0 para criar um falloff que ocorre uniformemente entre os dois cones, mas você pode definir outros valores conforme necessário.
A ilustração a seguir mostra a relação entre esses valores e como eles podem afetar os cones de luz internos e externos de um holofote.
Os holofotes emitem um cone de luz que tem duas partes: um cone interno brilhante e um cone externo. A luz é mais brilhante no cone interno e não está presente fora do cone externo, com a intensidade da luz atenuando entre as duas áreas. Esse tipo de atenuação é comumente chamado de enfraquecimento.
A quantidade de luz que um vértice recebe é baseada na localização do vértice nos cones internos ou externos. O Direct3D calcula o produto escalar do vetor de direção do holofote (L) e o vetor da luz para o vértice (D). Este valor é igual ao cosseno do ângulo entre os dois vetores e serve como um indicador da posição do vértice que pode ser comparado aos ângulos do cone da luz para determinar onde o vértice pode estar nos cones interno ou externo. A ilustração a seguir fornece uma representação gráfica da associação entre esses dois vetores.
O sistema compara esse valor com o cosseno dos ângulos do cone interno e externo do holofote. Os valores Theta e Phi da luz representam os ângulos totais do cone para os cones interno e externo. Como a atenuação ocorre à medida que o vértice se torna mais distante do centro de iluminação (em vez de através do ângulo total do cone), o tempo de execução divide esses ângulos de cone pela metade antes de calcular seus cossenos.
Se o produto escalar dos vetores L e D for menor ou igual ao cosseno do ângulo do cone externo, o vértice está além do cone externo e não recebe luz. Se o produto escalar de L e D for maior que o cosseno do ângulo do cone interno, o vértice estará dentro do cone interno e receberá a quantidade máxima de luz, ainda considerando a atenuação ao longo da distância. Se o vértice estiver em algum lugar entre as duas regiões, o enfraquecimento será calculado com a seguinte equação.
em que:
- If é a intensidade da luz após o enfraquecimento
- Alfa é o ângulo entre os vetores L e D
- Theta é o ângulo do cone interno
- Phi é o ângulo externo do cone
- p é o falloff
Essa fórmula gera um valor entre 0,0 e 1,0 que dimensiona a intensidade da luz no vértice para levar em conta o enfraquecimento A atenuação como um fator da distância do vértice da luz também é aplicada. O gráfico a seguir mostra como diferentes valores de queda podem afetar a curva de enfraquecimento.
O efeito de vários valores de queda na iluminação real é sutil, e uma pequena penalidade de desempenho é incorrida ao moldar a curva de queda com valores de queda diferentes de 1,0. Por esses motivos, esse valor normalmente é definido como 1,0.
Tópicos relacionados