Pipeline grafica
La pipeline programmabile Direct3D 11 è progettata per generare grafica per applicazioni di gioco in tempo reale. Questa sezione descrive la pipeline programmabile Direct3D 11. Il diagramma seguente illustra il flusso di dati dall'input all'output attraverso ognuna delle fasi programmabili.
La pipeline grafica per Microsoft Direct3D 11 supporta le stesse fasi della pipeline grafica Direct3D 10, con fasi aggiuntive per supportare funzionalità avanzate.
È possibile usare Direct3D 11API per configurare tutte le fasi. Le fasi che presentano core dello shader comuni (blocchi rettangolari arrotondati) sono programmabili tramite il linguaggio di programmazione HLSL . Come si vedrà, la pipeline rende la pipeline estremamente flessibile e adattabile.
Contenuto della sezione
Argomento | Descrizione |
---|---|
Fase dell'assembler di input |
L'API Direct3D 10 e versioni successive separa le aree funzionali della pipeline in fasi; la prima fase della pipeline è la fase input-assembler (IA). |
Fase vertex shader |
La fase vertex-shader (VS) elabora i vertici dall'assembler di input, eseguendo operazioni per vertice, ad esempio trasformazioni, skinning, morphing e illuminazione per vertice. I vertex shader operano sempre su un singolo vertice di input e producono un singolo vertice di output. La fase del vertex shader deve essere sempre attiva per l'esecuzione della pipeline. Se non è necessaria alcuna modifica o trasformazione dei vertici, è necessario creare e impostare un vertex shader pass-through sulla pipeline. |
Fasi di tassellatura |
Il runtime Direct3D 11 supporta tre nuove fasi che implementano la tassellatura, che converte le superfici di suddivisione con dettaglio basso in primitive di dettaglio superiore nella GPU. Tessere a mosaico (o suddivide) superfici ad ordine elevato in strutture adatte per il rendering. |
Fase dello shader geometry |
La fase geometry-shader (GS) esegue il codice shader specificato dall'applicazione con vertici come input e la possibilità di generare vertici nell'output. |
Fase di output di flusso |
Lo scopo della fase di output del flusso è l'output continuo (o flusso) dei dati dei vertici dalla fase geometry-shader (o dalla fase vertex shader se la fase geometry-shader è inattiva) in uno o più buffer in memoria (vedere Introduzione con la fase di output del flusso). |
Fase rasterizzatore |
La fase di rasterizzazione converte le informazioni vettoriali (composte da forme o primitive) in un'immagine raster (composta da pixel) allo scopo di visualizzare grafica 3D in tempo reale. |
Fase pixel shader |
La fase pixel-shader (PS) consente tecniche di ombreggiatura avanzate, ad esempio l'illuminazione per pixel e la post-elaborazione. Un pixel shader è un programma che combina variabili costanti, dati di trama, valori interpolati per vertice e altri dati per produrre output per pixel. La fase di rasterizzazione richiama un pixel shader una volta per ogni pixel coperto da una primitiva, ma è possibile specificare uno shader NULL per evitare l'esecuzione di uno shader. |
Fase di fusione dell'output |
La fase di unione dell'output genera il colore del pixel di cui è stato eseguito il rendering finale usando una combinazione di stato della pipeline, i dati pixel generati dagli shader pixel, il contenuto delle destinazioni di rendering e il contenuto dei buffer depth/stencil. La fase OM è il passaggio finale per determinare quali pixel sono visibili (con test depth-stencil) e fondendo i colori dei pixel finali. |