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 la forma en que 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 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

Dónde

  • start es la distancia a la que comienzan los efectos de niebla.
  • end es la distancia a la que ya no aumentan los efectos de niebla.
  • d representa la profundidad o la distancia desde el punto de vista. Para la niebla basada en intervalos, el valor de d es la distancia entre la posición de la cámara y un vértice. En el caso de 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

Se admiten fórmulas lineales y exponenciales para 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

Dónde

  • 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 direct3d

Dónde

  • 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 para un vértice. Si la aplicación realiza su propia transformación e iluminación, puede insertar los valores de factor de niebla manualmente para que lo aplique el sistema durante la representación.

 

En el gráfico siguiente se muestran estas fórmulas, usando 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 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 combinación del color de niebla y el color original, como factor de distancia. La fórmula se aplica a todos los dispositivos compatibles con 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, abrazados al rango de 0,0 y 1,0, 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