Condividi tramite


Filtraggio delle texture con mipmap

Un mipmap è una sequenza di texture, ognuna delle quali è una rappresentazione progressivamente più bassa della stessa immagine. L'altezza e la larghezza di ogni immagine, o livello, nella mipmap è una potenza di due dimensioni inferiori al livello precedente. Le mipmap non devono essere di forma quadrata.

Un'immagine mipmap ad alta risoluzione viene usata per gli oggetti vicini all'utente. Le immagini a bassa risoluzione vengono usate quando l'oggetto appare più lontano. Il mapping MIP migliora la qualità delle texture di cui è stato eseguito il rendering a scapito dell'uso di più memoria.

Direct3D rappresenta mipmap come catena di superfici associate. La texture con risoluzione più alta si trova all'inizio della catena e ha il livello successivo della mipmap come allegato. A sua volta, tale livello ha un allegato che rappresenta il livello successivo nella mipmap e così via, fino al livello di risoluzione più basso della mipmap.

Nelle figure seguenti viene illustrato un esempio di questi livelli. Le texture bitmap rappresentano un accesso a un contenitore in un gioco in prima persona 3D. Quando viene creato come mipmap, la trama con risoluzione più alta è la prima nel set. Ogni texture successiva nel set mipmap è più piccola in altezza e larghezza di una potenza di 2. In questo caso, la mipmap con risoluzione massima è di 256 pixel di 256 pixel. La texture successiva è 128x128. L'ultima texture della catena è 64x64.

Questo segno ha una distanza massima da cui è visibile. Se l'utente inizia lontano dal segno, il gioco visualizza la texture più piccola nella catena mipmap, che in questo caso la texture 64x64.

illustrazione di una trama 64x64 di un segno di pericolo

Man mano che l'utente sposta il punto di vista più vicino al segno, vengono usate texture a risoluzione più alta in modo progressivo nella catena mipmap. La risoluzione nella figura seguente è 128x128.

illustrazione di una trama 128x128 di un segno di pericolo

La texture con risoluzione più alta viene usata quando il punto di visualizzazione dell'utente è alla distanza minima consentita dal segno, come illustrato nella figura seguente.

illustrazione di una trama 256x256 di un segno di pericolo

Si tratta di un modo più efficiente per simulare la prospettiva per le texture. Anziché eseguire il rendering di una singola texture a molte risoluzioni, è più veloce usare più texture a risoluzioni diverse.

Direct3D può valutare quale texture in un set mipmap è la risoluzione più vicina all'output desiderato e può mappare i pixel nello spazio del texel. Se la risoluzione dell'immagine finale è tra le risoluzioni delle texture nel set mipmap, Direct3D può esaminare i texel in mipmap e combinare i relativi valori di colore.

Per usare mipmap, l'applicazione deve compilare un set di mipmap. Le applicazioni applicano mipmap selezionando il set mipmap come prima texture nell'insieme di texture correnti. Vedere Fusione delle texture.

Successivamente, l'applicazione deve impostare il metodo di filtro usato da Direct3D per campionare i texel. Il metodo più rapido di filtro mipmap consiste nel fare in modo che Direct3D selezioni il texel più vicino. Usare il valore enumerato D3DTEXF_POINT per selezionare questo valore. Direct3D può produrre risultati di filtro migliori se l'applicazione usa il valore enumerato D3DTEXF_LINEAR. In questo modo viene selezionata la mipmap più vicina e quindi viene calcolata una media ponderata dei texel che circondano la posizione nella texture in cui è mappata il pixel corrente.

Le texture mipmap vengono usate in scene 3D per ridurre il tempo necessario per eseguire il rendering di una scena. Migliorano anche il realismo della scena. Tuttavia, spesso richiedono grandi quantità di memoria.

Nota Ogni superficie di una catena mipmap ha dimensioni pari a metà della superficie precedente nella catena. Se la mipmap di primo livello ha dimensioni pari a 256x128, le dimensioni del mipmap di secondo livello sono 128x64, il terzo livello è 64x32 e così via, fino a 1x1. Non è possibile richiedere un numero di livelli mipmap in Livelli che causano la larghezza o l'altezza di qualsiasi mipmap nella catena essere inferiore a 1. Nel caso semplice di una superficie mipmap di primo livello 4x2, il valore massimo consentito per Livelli è tre. Le dimensioni di primo livello sono 4x2, le dimensioni di secondo livello sono 2x1 e le dimensioni per il terzo livello sono 1x1. Un valore maggiore di 3 in Livelli comporta un valore frazionario nell'altezza del mipmap di secondo livello e pertanto non è consentito.

 

Direct3D può eseguire automaticamente il filtro delle texture mipmap. Le applicazioni possono attraversare manualmente una catena mipmap per caricare i dati bitmap in ogni superficie della catena. Questo è spesso l'unico motivo per attraversare la catena. La generazione automatica di mipmap in fase di creazione della texture sfrutta i vantaggi del filtro hardware perché la mipmap risiede nella memoria video.

Filtro della texture