Compartir a través de


Fórmulas de niebla (Direct3D 9)

Las aplicaciones de C++ pueden controlar cómo afecta la niebla al color de los objetos de una escena cambiando cómo Microsoft Direct3D calcula efectos de niebla a lo largo de la distancia. El tipo enumerado D3DFOGMODE contiene miembros que identifican las tres fórmulas de niebla. Todas las fórmulas calculan un factor de niebla como función de la distancia, dados los parámetros que establece la aplicación.

Niebla lineal

Esto se establece con la siguiente ecuación de D3DFOG_LINEAR.

ecuación de niebla lineal direct3d

where

  • start es la distancia a la que comienzan los efectos de niebla.
  • end es la distancia a la que los efectos de niebla ya no aumentan.
  • d representa la profundidad o la distancia desde el punto de vista. En el caso de la niebla basada en rango, el valor de d es la distancia entre la posición de la cámara y un vértice. Para la niebla no basada en rangos, el valor de d es el valor absoluto de la coordenada Z en el espacio de la cámara.

Niebla exponencial

Las fórmulas lineales y exponenciales son compatibles con niebla de píxeles y niebla de vértices.

Esto se establece con la siguiente ecuación de D3DFOG_EXP.

ecuación de niebla exponencial direct3d

where

  • e es la base de logaritmos naturales (aproximadamente 2,71828).
  • densidad es una densidad arbitraria de niebla que puede oscilar entre 0,0 y 1,0.
  • d representa la profundidad o la distancia desde el punto de vista, como se indicó anteriormente.

Esto se establece con la siguiente ecuación de D3DFOG_EXP2.

ecuación de niebla exponencial 2 de direct3d

where

  • e es la base de logaritmos naturales como se indicó anteriormente.
  • densidad es una densidad arbitraria de niebla que puede oscilar entre 0,0 y 1,0, como se indicó anteriormente.
  • d representa la profundidad o la distancia desde el punto de vista, como se indicó anteriormente.

Nota

El sistema almacena el factor de niebla en el componente alfa del color especular de un vértice. Si la aplicación realiza su propia transformación e iluminación, puede insertar manualmente los valores de factor de niebla, que aplicará el sistema durante la representación.

 

En el gráfico siguiente se muestran estas fórmulas, con valores comunes como en los parámetros de fórmula.

gráfico de las fórmulas de niebla a lo largo de la distancia y la cantidad de color

D3DFOG_LINEAR es 1.0 al principio y 0.0 al final. No se mide en relación con los planos cercanos o lejanos.

Cuando Direct3D calcula efectos de niebla, usa el factor de niebla de una de las ecuaciones anteriores en la siguiente ecuación de mezcla.

ecuación de efectos de niebla para direct3d

Esta fórmula escala eficazmente el color del polígono actual C por el factor de niebla f, y agrega el producto al color de niebla C, escalado por el inverso bit a bit del factor de niebla. El valor de color resultante es una mezcla del color de niebla y el color original, como factor de distancia. La fórmula se aplica a todos los dispositivos admitidos en Microsoft DirectX 7.0 y versiones posteriores. Para el dispositivo de rampa heredado, el factor de niebla escala los componentes de color difuso y especular, sujeta al rango de 0,0 y 1,0, ambos inclusive. El factor de niebla normalmente comienza en 1,0 para el plano cercano y disminuye a 0,0 en el plano lejano.

Tipos de niebla