Fator de atenuação e destaque
Os componentes de iluminação difusa e especular da equação de iluminação global contêm termos que descrevem a atenuação da luz e o cone do holofote. Esses termos são descritos abaixo.
Atenuação
A atenuação de uma luz depende do tipo de luz e da distância entre a luz e a posição do vértice. Para calcular a atenuação, use uma das seguintes equações.
Atten = 1/( att0i + att1i * d + att2i * d²)
Onde:
Parâmetro | Valor padrão | Type | Descrição | Intervalo |
---|---|---|---|---|
att0i | 0,0 | Ponto flutuante | Fator de atenuação constante | 0 a +infinito |
att1i | 0,0 | Ponto flutuante | Fator de atenuação linear | 0 a +infinito |
att2i | 0,0 | Ponto flutuante | Fator de atenuação quadrática | 0 a +infinito |
d | N/D | Ponto flutuante | Distância da posição do vértice à posição da luz | N/D |
- Atten = 1, se a luz for uma luz direcional.
- Atten = 0, se a distância entre a luz e o vértice exceder o alcance da luz.
A distância entre a luz e a posição do vértice é sempre positiva.
d = | Ldir |
Onde:
Parâmetro | Valor padrão | Type | Descrição |
---|---|---|---|
Ldir | N/D | Vetor 3D com valores de ponto flutuante x, y e z | Vetor de direção da posição do vértice para a posição da luz |
Se d for maior que o intervalo da luz, o Direct3D não fará mais cálculos de atenuação e não aplicará nenhum efeito da luz ao vértice.
As constantes de atenuação atuam como coeficientes na fórmula - você pode produzir uma variedade de curvas de atenuação fazendo ajustes simples nelas. Você pode definir Atenuação1 como 1,0 para criar uma luz que não atenua, mas ainda é limitada pelo intervalo, ou pode experimentar valores diferentes para obter vários efeitos de atenuação.
A atenuação na faixa máxima da luz não é 0,0. Para evitar que as luzes apareçam repentinamente quando estão no intervalo de luz, um aplicativo pode aumentar o alcance da luz. Ou o aplicativo pode configurar constantes de atenuação para que o fator de atenuação esteja próximo de 0,0 na faixa de luz. O valor de atenuação é multiplicado pelos componentes vermelho, verde e azul da cor da luz para dimensionar a intensidade da luz como um fator da distância que a luz percorre até um vértice.
Fator de destaque
A equação a seguir especifica o fator de destaque.
Parâmetro | Valor padrão | Type | Descrição | Intervalo |
---|---|---|---|---|
Rhoeu | N/D | Ponto flutuante | cosseno (ângulo) para holofote i | N/D |
phi i | 0,0 | Ponto flutuante | Ângulo de penumbra do holofote i em radianos | [i, pi) |
ThetaI | 0,0 | Ponto flutuante | Ângulo de umbra do holofote i em radianos | [0, pi) |
Queda | 0,0 | Ponto flutuante | Fator de queda | (-infinito, +infinito) |
Onde:
rho = norm(Ldcs).norma(Ldir)
e:
Parâmetro | Valor padrão | Type | Descrição |
---|---|---|---|
Ldcs | N/D | Vetor 3D com valores de ponto flutuante x, y e z | O negativo da direção da luz no espaço da câmera |
Ldir | N/D | Vetor 3D com valores de ponto flutuante x, y e z | Vetor de direção da posição do vértice para a posição da luz |
Depois de calcular a atenuação da luz, para calcular os componentes difusos e especulares do vértice, o Direct3D também considera os efeitos de destaque, se aplicável, o ângulo que a luz reflete de uma superfície e a refletância do material atual. Em Tipos de luz, consulte "Holofote".
Tópicos relacionados