Formule fog (Direct3D 9)

Le applicazioni C++ possono controllare il modo in cui la nebbia influisce sul colore degli oggetti in una scena modificando il modo in cui Microsoft Direct3D calcola gli effetti della nebbia sulla distanza. Il tipo enumerato D3DFOGMODE contiene membri che identificano le tre formule di nebbia. Tutte le formule calcolano un fattore di nebbia come funzione della distanza, in base ai parametri impostati dall'applicazione.

Nebbia lineare

Questa opzione viene impostata con l'equazione di D3DFOG_LINEAR seguente.

equazione della nebbia lineare diretta3d

dove

  • start è la distanza in cui iniziano gli effetti della nebbia.
  • la fine è la distanza in cui gli effetti della nebbia non aumentano più.
  • d rappresenta la profondità o la distanza dal punto di vista. Per la nebbia basata sull'intervallo, il valore per d è la distanza tra la posizione della fotocamera e un vertice. Per la nebbia non a intervalli, il valore per d è il valore assoluto della coordinata Z nello spazio della fotocamera.

Nebbia esponenziale

Le formule lineari ed esponenziali sono supportate sia per la nebbia dei pixel che per la nebbia del vertice.

Questo valore viene impostato con l'equazione di D3DFOG_EXP seguente.

equazione di nebbia esponenziale diretta3d

dove

  • e è la base di logaritmi naturali (circa 2,71828).
  • densità è una densità di nebbia arbitraria che può variare da 0,0 a 1,0.
  • d rappresenta la profondità o la distanza dal punto di vista, come indicato in precedenza.

Viene impostato con l'equazione di D3DFOG_EXP2 seguente.

equazione di 2 nebbia esponenziale diretta 3d

dove

  • e è la base di logaritmi naturali come indicato sopra.
  • densità è una densità di nebbia arbitraria che può variare da 0,0 a 1,0 come indicato sopra.
  • d rappresenta la profondità o la distanza dal punto di vista, come indicato sopra.

Nota

Il sistema archivia il fattore di nebbia nel componente alfa del colore speculare per un vertice. Se l'applicazione esegue la propria trasformazione e illuminazione, è possibile inserire manualmente i valori del fattore di nebbia da applicare dal sistema durante il rendering.

 

Il grafico seguente mostra queste formule usando valori comuni come nei parametri della formula.

grafico delle formule di nebbia sulla distanza e sulla quantità di colore

D3DFOG_LINEAR è 1.0 all'inizio e alla fine 0.0. Non viene misurata rispetto ai piani vicini o lontani.

Quando Direct3D calcola gli effetti della nebbia, usa il fattore nebbia da una delle equazioni precedenti nell'equazione di fusione seguente.

equazione degli effetti di nebbia per direct3d

Questa formula ridimensiona in modo efficace il colore del poligono corrente C dal fattore di nebbia f e aggiunge il prodotto al colore della nebbia C, ridimensionato dall'inverso bit per bit del fattore di nebbia. Il valore del colore risultante è una fusione del colore della nebbia e del colore originale, come fattore di distanza. La formula si applica a tutti i dispositivi supportati in Microsoft DirectX 7.0 e versioni successive. Per il dispositivo di rampa legacy, il fattore di nebbia scala i componenti di colore diffuso e speculare, bloccato all'intervallo di 0,0 e 1,0, inclusivo. Il fattore nebbia inizia in genere a 1,0 per il piano vicino e diminuisce a 0,0 al piano lontano.

Tipi di nebbia