Risorse texture compresse

Le mappe di texture sono immagini digitalizzate disegnate su forme tridimensionali per aggiungere dettagli visivi. Vengono mappate in queste forme durante la rasterizzazione e il processo può utilizzare grandi quantità sia di bus di sistema sia di memoria. Per ridurre la quantità di memoria utilizzata dalle texture, Direct3D supporta la compressione delle superfici di texture. Alcuni dispositivi Direct3D supportano le superfici di texture compresse in modo nativo. In questi dispositivi, dopo aver creato una superficie compressa e caricato i dati, la superficie può essere usata in Direct3D come qualsiasi altra superficie di texture. Direct3D gestisce la decompressione quando la texture viene mappata a un oggetto 3D.

Efficienza di archiviazione e compressione di texture

Tutti i formati di compressione delle texture sono potenze di due. Anche se questo non significa che una texture sia necessariamente quadrata, sia x sia y sono potenze di due. Ad esempio, se una texture è originariamente 512 per 128 byte, il mipmap successivo sarà 256 per 64 e così via, con ogni livello decrescente di una potenza di due. A livelli inferiori, dove la texture viene filtrata a 16 per 2 e a 8 per 1, ci saranno bit sprecati perché il blocco di compressione è sempre un blocco di texel 4x4. Le parti inutilizzate del blocco vengono riempite.

Anche se ci sono bit sprecati ai livelli più bassi, il guadagno complessivo è ancora significativo. Il peggior caso è, in teoria, una texture 2K per 1 (2⁰ potenza). In questo caso, viene codificata solo una singola riga di pixel per blocco, mentre il resto del blocco non viene usato.

Combinazione di formati all'interno di una singola texture

È importante notare che qualsiasi singola texture deve specificare che i dati vengono archiviati come 64 o 128 bit per gruppo di 16 texel. Se i blocchi a 64 bit, ovvero il formato di compressione a blocchi BC1, vengono usati per la texture, è possibile combinare i formati alfa a 1 bit e opachi in base a ogni singolo blocco all'interno della stessa texture. In altre parole, il confronto della grandezza dell'intero senza segno di color_0 e color_1 viene eseguito in modo univoco per ogni blocco di 16 texel.

Dopo aver usato i blocchi a 128 bit, è necessario specificare il canale alfa in modalità esplicita (formato BC2) o interpolata (formato BC3) per l'intera texture. Come con il colore, quando si seleziona la modalità interpolata (formato BC3), è possibile usare la modalità a otto o a sei alfa interpolati per ogni singolo blocco. Anche in questo caso, il confronto di grandezza di alpha_0 e alpha_1 viene eseguito in modo univoco per ogni singolo blocco.

Direct3D fornisce servizi per comprimere le superfici usate per texturizzare modelli 3D. Questa sezione fornisce informazioni sulla creazione e la modifica di dati in una superficie di texture compressa.

In questa sezione

Argomento Descrizione

Texture alfa a 1 bit e opache

Il formato di texture BC1 riguarda le texture opache o con un singolo colore trasparente.

Texture con canali alfa

Esistono due modi per codificare le mappe di texture che presentano trasparenza più complessa. In ogni caso, un blocco che descrive la trasparenza precede il blocco a 64 bit già descritto. La trasparenza è rappresentata come bitmap 4x4 con 4 bit per pixel (codifica esplicita) o con un minor numero di bit e interpolazione lineare analoga a quella usata per la codifica dei colori.

Compressione a blocchi

La compressione a blocchi è una tecnica di compressione di texture con perdita di dati per ridurre le dimensioni delle texture e il footprint della memoria, migliorando le prestazioni. Una texture compressa a blocchi può essere inferiore a una texture con 32 bit per colore.

Formati di texture compressi

Questa sezione contiene informazioni sull'organizzazione interna dei formati di texture compressi. Questi dettagli non sono necessari per usare texture compresse, perché è possibile usare le funzioni Direct3D per la conversione da e verso formati compressi. Queste informazioni, tuttavia, sono utili se si desidera operare direttamente su dati di superficie compressi.

 

Texture