Rendering Pipeline
L'hardware grafico che supporta Direct3D versione 10 può essere progettato con core programmabili dello shader condivisi. L'unità di elaborazione grafica (GPU) può programmare core shader che possono essere pianificati tra i blocchi funzionali che costituiscono la pipeline di rendering. Questo bilanciamento del carico significa che gli sviluppatori hardware non devono usare ogni tipo di shader, ma solo quelli necessari per eseguire il rendering. Questo bilanciamento del carico può quindi liberare risorse per i tipi di shader attivi. La figura seguente illustra i blocchi funzionali della pipeline di rendering. Le sezioni che seguono la figura descrivono i blocchi in modo più dettagliato.
Assembler input
La fase dell'assembler di input usa operazioni di funzione fissa per leggere i vertici in memoria. L'assembler di input forma quindi primitive geometry e crea elementi di lavoro della pipeline. Gli identificatori dei vertici generati automaticamente, gli identificatori di istanza (disponibili per il vertex shader) e gli identificatori primitivi (disponibili per il geometry shader o pixel shader) consentono l'elaborazione specifica dell'identificatore. La linea tratteggiata nella figura mostra il flusso di elaborazione specifica dell'identificatore.
Vertex shader
La fase vertex shader accetta un vertice come input e restituisce un vertice.
Geometry shader
La fase geometry shader accetta una primitiva come input e restituisce zero, una o più primitive. Le primitive di output possono contenere più dati del possibile senza il geometry shader. La quantità totale di dati di output per operazione è (dimensioni vertice x numero di vertici).
Output del flusso
La fase di output del flusso concatena (flussi out) primitive che raggiungono l'output del geometry shader per restituire i buffer. L'output del flusso è associato allo shader geometry e entrambi vengono programmati insieme.
Rasterizzatore
Le primitive della fase di rasterizzazione (inclusi i limiti di clip personalizzate), eseguono la divisione prospettica sulle primitive, implementano il riquadro di visualizzazione e la selezione scissor, eseguono la selezione della destinazione di rendering ed eseguono la configurazione primitiva.
Pixel shader
La fase pixel shader accetta un pixel come input e restituisce un pixel nella stessa posizione o nessun pixel. Il pixel shader non può leggere le destinazioni di rendering correnti.
Unione output
La fase di fusione dell'output esegue operazioni di fusione, profondità e stencil di rendering della funzione fissa.