Introduzione alle trame in Direct3D 11

Una risorsa trama è una raccolta strutturata di dati progettata per archiviare texel. Un texel rappresenta l'unità più piccola di una trama che può essere letto o scritto dalla pipeline. A differenza dei buffer, le trame possono essere filtrate dai campioni di trama mentre sono letti da unità shader. Il tipo di trama influisce sulla modalità di filtro della trama. Ogni texel contiene 1 a 4 componenti, disposti in uno dei formati DXGI definiti dall'enumerazione DXGI_FORMAT.

Le trame vengono create come risorsa strutturata con dimensioni note. Tuttavia, ogni trama può essere tipizzata o senza tipi quando la risorsa viene creata fino a quando il tipo viene completamente specificato usando una visualizzazione quando la trama è associata alla pipeline.

Tipi di trama

Esistono diversi tipi di trame: 1D, 2D, 3D, ognuno dei quali può essere creato con o senza mipmap. Direct3D 11 supporta anche matrici di trame e trame multicampionato.

Trame 1D

Una trama 1D nella forma più semplice contiene dati di trama che possono essere risolti con una singola coordinata di trama; può essere visualizzato come matrice di texel, come illustrato nella figura seguente. Le trame 1D sono rappresentate dall'interfaccia ID3D11Texture1D .

illustrazione di una trama 1d

Ogni texel contiene un numero di componenti di colore a seconda del formato dei dati archiviati. Aggiungendo maggiore complessità, è possibile creare una trama 1D con livelli mipmap, come illustrato nella figura seguente.

illustrazione di una trama 1d con livelli mipmap

Un livello mipmap è una trama che è una potenza di due più piccoli del livello sopra di esso. Il livello superiore contiene il massimo dettaglio, ogni livello successivo è più piccolo. Per una mipmap 1D, il livello più piccolo contiene un texel. Inoltre, i livelli MIP riducono sempre fino a 1:1. Quando vengono generate mipmap per una trama di dimensioni dispari, il livello inferiore successivo è sempre di dimensioni pari (tranne quando il livello più basso raggiunge 1). Ad esempio, il diagramma illustra una trama 5x1 il cui livello inferiore successivo è una trama 2x1, il cui livello di mip successivo (e ultimo) è una trama di dimensioni 1x1. I livelli vengono identificati da un indice denominato LOD (livello di dettaglio) che viene usato per accedere alla trama più piccola durante il rendering della geometria che non è così vicina alla fotocamera.

Matrici trama 1D

Direct3D 11 supporta anche matrici di trame. Una matrice di trame 1D è rappresentata anche dall'interfaccia ID3D11Texture1D . Una matrice di trame 1D ha un aspetto concettuale simile alla figura seguente.

illustrazione di una matrice di trame 1d

Questa matrice di trama contiene tre trame. Ognuna delle tre trame ha una larghezza di trama pari a 5 (ovvero il numero di elementi nel primo livello). Ogni trama contiene anche una mappa mipmap a 3 livelli.

Tutte le matrici di trame in Direct3D sono una matrice omogenea di trame; ciò significa che ogni trama in una matrice di trame deve avere lo stesso formato e dimensioni dei dati (inclusa la larghezza della trama e il numero di livelli di mipmap). È possibile creare matrici di trame di dimensioni diverse, purché tutte le trame in ogni matrice corrispondano alle dimensioni.

Trame 2D e matrici trama 2D

Una risorsa Texture2D contiene una griglia 2D di texel. Ogni texel è indirizzabile da un vettore u, v. Poiché è una risorsa trama, può contenere livelli di mipmap e sottorisorse. Le trame 2D sono rappresentate dall'interfaccia ID3D11Texture2D . Una risorsa trama 2D popolata è simile alla figura seguente.

illustrazione di una risorsa trama 2d

Questa risorsa trama contiene una trama 3x5 singola con tre livelli di mipmap.

Una risorsa matrice trama 2D è una matrice omogenea di trame 2D; ovvero, ogni trama ha lo stesso formato e dimensioni dei dati (inclusi i livelli mipmap). Una matrice di trame 2D è rappresentata anche dall'interfaccia ID3D11Texture2D . Ha un layout simile alla matrice trama 1D, ad eccezione del fatto che le trame ora contengono dati 2D, come illustrato nella figura seguente.

illustrazione di una matrice di trame 2d

Questa matrice di trama contiene tre trame; ogni trama è 3x5 con due livelli mipmap.

Uso di una matrice trama 2D come cubo trama

Un cubo trama è una matrice di trame 2D che contiene 6 trame, una per ogni faccia del cubo. Un cubo di trama completamente popolato è simile alla figura seguente.

illustrazione di una matrice di trame 2d che rappresentano un cubo di trama

Una matrice di trame 2D che contiene 6 trame può essere letto dall'interno di shader con le funzioni intrinseche della mappa del cubo, dopo che sono associate alla pipeline con una visualizzazione cubo-trama. I cubi trama vengono indirizzati dallo shader con un vettore 3D che punta dal centro del cubo di trama.

Nota

I dispositivi creati con livello di funzionalità 10_1 e versioni successive possono supportare matrici di cubi di trama in cui il numero di trame è uguale al numero di cubi di trama in una matrice volte sei. I dispositivi creati con livello di funzionalità 10_0 supportano solo un singolo cubo di trama di sei visi. Direct3D 11 non supporta anche le mappe dei cubi parziali.

 

Trame 3D

Una risorsa trama 3D (nota anche come trama del volume) contiene un volume 3D di texel. Poiché è una risorsa trama, può contenere livelli mipmap. Le trame 3D sono rappresentate dall'interfaccia ID3D11Texture3D . Una trama 3D completamente popolata è simile alla figura seguente.

illustrazione di una risorsa trama 3d

Quando una sezione mipmap trama 3D è associata come output di destinazione di rendering (con una visualizzazione di destinazione di rendering), la trama 3D si comporta in modo identico a una matrice di trame 2D con n sezioni. La sezione di rendering specifica viene scelta dalla fase geometry-shader dichiarando un componente scalare dei dati di output come valore di sistema SV_RenderTargetArrayIndex.

Non esiste alcun concetto di matrice trama 3D; pertanto una sottoresource trama 3D è un singolo livello mipmap.

Trame