Atenuación y factor de contenido destacado (Direct3D 9)
Los componentes de iluminación difusa y especular de la ecuación de iluminación global contienen términos que describen la atenuación de la luz y el cono de foco. Estos términos se describen a continuación.
Atenuación
La atenuación de una luz depende del tipo de luz y de la distancia entre la luz y la posición del vértice. Para calcular la atenuación, use una de las siguientes ecuaciones.
Atten = 1/( att0i + att1i * d + att2i * d²)
Donde:
Parámetro | Valor predeterminado | Tipo | Descripción | Intervalo |
---|---|---|---|---|
att0i | 0,0 | FLOAT | Factor de atenuación constante | De 0 a +infinito |
att1i | 0,0 | FLOAT | Factor de atenuación lineal | De 0 a +infinito |
att2i | 0,0 | FLOAT | Factor de atenuación cuadrática | De 0 a +infinito |
d | N/D | FLOAT | Distancia desde la posición del vértice a la posición de la luz | N/D |
- Atten = 1, si la luz es una luz direccional.
- Atten = 0, si la distancia entre la luz y el vértice supera el intervalo de la luz.
Los valores att0, att1, att2 se especifican mediante los miembros De atenuación0, Atenuación1 y Atenuación2 de D3DLIGHT9.
La distancia entre la luz y la posición del vértice siempre es positiva.
d = | Ldir |
Donde:
Parámetro | Valor predeterminado | Tipo | Descripción |
---|---|---|---|
Ldir | No aplicable | D3DVECTOR | Vector de dirección de la posición del vértice a la posición de la luz |
Si d es mayor que el rango de la luz, es decir, el miembro Range de una estructura D3DLIGHT9 , Direct3D no realiza ningún cálculo de atenuación adicional y no aplica ningún efecto de la luz al vértice.
Las constantes de atenuación actúan como coeficientes en la fórmula: puede producir una variedad de curvas de atenuación realizando ajustes simples en ellos. Puede establecer Atenuación1 en 1,0 para crear una luz que no atenua, pero que aún está limitada por intervalo, o puede experimentar con diferentes valores para lograr varios efectos de atenuación.
La atenuación en el intervalo máximo de la luz no es 0,0. Para evitar que las luces aparezcan repentinamente cuando están en el rango de luz, una aplicación puede aumentar el intervalo de luz. O bien, la aplicación puede configurar constantes de atenuación para que el factor de atenuación esté cerca de 0,0 en el intervalo de luz. El valor de atenuación se multiplica por los componentes rojo, verde y azul del color de la luz para escalar la intensidad de la luz como factor de la distancia que la luz viaja a un vértice.
Factor de contenido destacado
La siguiente ecuación especifica el factor de contenido destacado.
Parámetro | Valor predeterminado | Tipo | Descripción | Intervalo |
---|---|---|---|---|
rhoi | N/D | FLOAT | coseno(ángulo) para spotlight i | N/D |
phii | 0,0 | FLOAT | Ángulo penumbra de foco i en radianes | [thetai, pi) |
thetai | 0,0 | FLOAT | Ángulo de luz i en radianes | [0, pi) |
Difuminación | 0,0 | FLOAT | Factor de caída | (-infinity, +infinity) |
Donde:
rho = norm(Ldcs). norm(Ldir)
y:
Parámetro | Valor predeterminado | Tipo | Descripción |
---|---|---|---|
Ldcs | No aplicable | D3DVECTOR | El negativo de la dirección de la luz en el espacio de la cámara |
Ldir | No aplicable | D3DVECTOR | Vector de dirección de la posición del vértice a la posición de la luz |
Después de calcular la atenuación de luz, Direct3D también tiene en cuenta los efectos de foco si procede, el ángulo que refleja la luz de una superficie y la reflectancia del material actual para calcular los componentes difusos y especulares de ese vértice. Para obtener más información, consulte SpotLight.
Temas relacionados