Atenuación y factor de foco de luz
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 ecuaciones siguientes.
Atten = 1/( att0i + att1i * d + att2i * d²)
Donde:
Parámetro | Valor predeterminado | Tipo | Descripción | Intervalo |
---|---|---|---|---|
att0i | 0,0 | Punto flotante | Factor de atenuación constante | De 0 a +infinito |
att1i | 0,0 | Punto flotante | Factor de atenuación lineal | De 0 a +infinito |
att2i | 0,0 | Punto flotante | Factor de atenuación cuadrática | De 0 a +infinito |
d | N/D | Punto flotante | Distancia de 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.
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 | N/D | Vector 3D con valores de punto flotante x, y y z | 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, Direct3D no realiza más cálculos de atenuación 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 mediante la realización de ajustes simples en ellas. Puedes establecer La atenuación1 en 1.0 para crear una luz que no se atenúa, pero que sigue limitada por intervalo, o puedes 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 rango 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 la luz viaja a un vértice.
Factor de contenido destacado
La ecuación siguiente especifica el factor de foco.
Parámetro | Valor predeterminado | Tipo | Descripción | Intervalo |
---|---|---|---|---|
rhoi | N/D | Punto flotante | coseno(ángulo) para spotlight i | N/D |
phii | 0,0 | Punto flotante | Ángulo penumbra de foco i en radianes | [thetai, pi) |
thetai | 0,0 | Punto flotante | Ángulo de Umbra de foco i en radianes | [0, pi) |
Difuminación | 0,0 | Punto flotante | Factor de caída | (-infinity, +infinity) |
Donde:
rho = norm(Ldcs).norm(Ldir)
y:
Parámetro | Valor predeterminado | Tipo | Descripción |
---|---|---|---|
Ldcs | N/D | Vector 3D con valores de punto flotante x, y y z | El negativo de la dirección de la luz en el espacio de la cámara |
Ldir | N/D | Vector 3D con valores de punto flotante x, y y z | 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 la luz, para calcular los componentes difusos y especulares del vértice, Direct3D también considera efectos de foco si procede, el ángulo que la luz refleja desde una superficie y la reflectancia del material actual. En Tipos de luz, vea "Spotlight".
Temas relacionados