Condividi tramite


Pipelines e shader con Direct3D 12

La pipeline programmabile Direct3D 12 aumenta significativamente le prestazioni di rendering rispetto alle interfacce di programmazione grafica di generazione precedenti.

Pipeline grafica Direct3D 12

Il diagramma seguente illustra la pipeline grafica Direct3D 12 e lo stato.

diagram illustrating direct3d 12 pipeline and state

Una pipeline grafica è il flusso sequenziale di input e output dei dati come frame di rendering della GPU. Dato lo stato della pipeline e gli input, la GPU esegue una serie di operazioni per creare le immagini risultanti. Una pipeline grafica contiene shader, che eseguono effetti e calcoli programmabili e operazioni di funzione fissa.

Si noti quanto segue quando si fa riferimento al diagramma dello stato della pipeline:

  • Le tabelle del descrittore e gli heaps possono essere disposte arbitrariamente: le SRV, i CBV e gli UAV possono essere a cui si fa riferimento e allocare in qualsiasi ordine.
  • Alcune operazioni della pipeline sono configurabili. Ad esempio, la fusione di output funziona in genere su base a lettura-modifica-scrittura con le viste di destinazione di rendering e stencil di profondità. Tuttavia, la pipeline può essere configurata in modo che una di queste viste sia di sola lettura o di sola scrittura.
  • Gli esempi statici non fanno parte degli argomenti radice poiché sono statici.

Oggetti dello stato della pipeline

Direct3D 12 introduce l'oggetto stato della pipeline (PSO). Anziché archiviare e rappresentare lo stato della pipeline in un numero elevato di oggetti di alto livello, gli stati dei componenti della pipeline come l'assembler di input, il rasterizzatore, lo shader pixel e la fusione di output vengono archiviati in un PSO. Un PSO è un oggetto stato della pipeline unificata non modificabile dopo la creazione. Il PSO attualmente selezionato può essere modificato rapidamente e dinamicamente e i driver e hardware possono convertire direttamente un PSO in istruzioni hardware native e stato, pronto per l'elaborazione grafica. Per applicare un PSO, l'hardware copia una quantità minima di stato pre-calcolata direttamente ai registri hardware. Ciò rimuove il sovraccarico causato dal driver grafico continuamente ricompilando lo stato hardware in base a tutte le impostazioni di rendering e pipeline attualmente applicabili. Il risultato è notevolmente ridotto il sovraccarico delle chiamate di disegno, un aumento delle prestazioni e una maggiore quantità di chiamate per fotogramma.

Il PSO attualmente applicato definisce e connette tutti gli shader usati nella pipeline di rendering. Microsoft High Level Shader Language (HLSL) viene precompilato in oggetti shader, che vengono quindi usati in fase di esecuzione come input per gli oggetti stato della pipeline. Per altre informazioni su come le funzioni PSO all'interno della pipeline grafica, vedere Gestione dello stato della pipeline grafica in Direct3D 12.

Pipeline di calcolo Direct3D 12

Il diagramma seguente illustra la pipeline di calcolo e lo stato Direct3D 12.

Diagram that shows the Direct3D 12 compute pipeline.

Non sono presenti unità di funzione fisse in questa pipeline, tuttavia i descrittori heaps, gli heaps di sampler e gli esempi statici sono ancora disponibili nel calcolo.

Invio di lavoro in Direct3D 12