Fasi della pipeline (Direct3D 10)

La pipeline programmabile Direct3D 10 è progettata per la generazione di grafica per applicazioni di gioco in tempo reale. Il diagramma seguente mostra il flusso di dati dall'input all'output attraverso ognuna delle fasi programmabili.

diagramma del flusso di dati nella pipeline programmabile direct3d 10

Tutte le fasi possono essere configurate usando l'API. Le fasi con core di shader comuni (i blocchi rettangolari arrotondati) sono programmabili usando il linguaggio di programmazione HLSL. Come si vedrà, la pipeline rende la pipeline estremamente flessibile e adattabile. Lo scopo di ognuna delle fasi è elencato di seguito.

  • Fase dell'assembler di input : la fase dell'assembler di input è responsabile della fornitura di dati (triangoli, linee e punti) alla pipeline.
  • Fase vertex-shader. La fase vertex-shader elabora i vertici, eseguendo generalmente operazioni come trasformazioni, applicazione di interfacce e illuminazione. Un vertex shader accetta sempre un singolo vertice di input e produce un singolo vertice di output.
  • Fase geometry-shader: la fase geometry-shader elabora intere primitive. L'input è una primitiva completa (ovvero tre vertici per un triangolo, due vertici per una linea o un singolo vertice per un punto). Inoltre, ogni primitiva può includere anche i dati dei vertici per qualsiasi primitiva adiacente perimetrale. Ciò potrebbe includere al massimo tre vertici aggiuntivi per un triangolo o due vertici aggiuntivi per una linea. Geometry Shader supporta anche l'amplificazione geometria limitata e la de-amplificazione. Dato una primitiva di input, Geometry Shader può eliminare la primitiva o generare una o più nuove primitive.
  • Fase di output di flusso: la fase di output del flusso è progettata per lo streaming di dati primitivi dalla pipeline alla memoria nel modo in cui viene eseguito il rasterizer. I dati possono essere inviati come flusso di output e/o passati all'unità di rasterizzazione. I dati trasmessi in streaming alla memoria possono essere rimessi in circolazione nella pipeline come dati di input oppure letti di nuovo dalla CPU.
  • Fase rasterizer: il rasterizzatore è responsabile del ritaglio delle primitive, la preparazione delle primitive per lo shader pixel e la determinazione di come richiamare pixel shader.
  • Fase pixel-shader. La fase pixel-shader riceve i dati interpolati per una primitiva e genera dati per pixel, come il colore.
  • Fase di fusione dell'output: la fase di fusione dell'output è responsabile della combinazione di vari tipi di dati di output (valori pixel shader, informazioni di profondità e stencil) con il contenuto dei buffer di destinazione di rendering e profondità/stencil per generare il risultato finale della pipeline.

Guida alla programmazione per Direct3D 10