Sdílet prostřednictvím


Fáze kanálu (Direct3D 10)

Programovatelný kanál Direct3D 10 je navržený pro generování grafiky pro herní aplikace v reálném čase. Následující diagram znázorňuje tok dat ze vstupu do výstupu prostřednictvím jednotlivých programovatelných fází.

diagram toku dat v programovatelném kanálu direct3d 10

Všechny fáze je možné nakonfigurovat pomocí rozhraní API. Fáze s běžnými jádry shaderu (zaoblené obdélníkové bloky) jsou programovatelné pomocí programovacího jazyka HLSL. Jak vidíte, díky tomu je kanál extrémně flexibilní a přizpůsobitelný. Účel každé fáze je uvedený níže.

  • Input-Assembler fáze – fáze vstupního assembleru zodpovídá za poskytování dat (trojúhelníky, čáry a body) kanálu.
  • Vertex-Shader fáze – fáze vrcholů a shaderu zpracovává vrcholy, obvykle provádí operace, jako jsou transformace, skinování a osvětlení. Shader vrcholů vždy přebírá jeden vstupní vrchol a vytvoří jeden výstupní vrchol.
  • Geometry-Shader fáze – fáze geometry-shader zpracovává celá primitiva. Jeho vstup je úplný primitivní (což je tři vrcholy pro trojúhelník, dva vrcholy pro čáru nebo jeden vrchol pro bod). Kromě toho může každá primitiva obsahovat také data vrcholů pro jakékoli primitivy sousedící hrany. To může zahrnovat maximálně další tři vrcholy pro trojúhelník nebo další dva vrcholy pro čáru. Shader geometrie také podporuje omezené amplifikace geometrie a de amplifikace. Při zadání primitivního vstupu může shader geometrie zahodit primitivní nebo generovat jednu nebo více nových primitiv.
  • Stream-Output fáze – fáze výstupu datového proudu je určená pro streamování primitivních dat z kanálu do paměti na cestě k rasterizátoru. Data mohou být streamována nebo předána do rastrového nástroje. Data streamovaná do paměti je možné znovu zahlcením zpět do kanálu jako vstupní data nebo čtením z procesoru.
  • rasterizer stage - Rasterizer je zodpovědný za výřez primitiv, příprava primitiv pro pixel shader a určení, jak vyvolat pixel shadery.
  • Pixel-Shader fáze – fáze shaderu pixelů přijímá interpolovaná data pro primitivní data a generuje data o jednotlivých pixelech, jako je barva.
  • Output-Merger fáze – Fáze sloučení výstupu odpovídá za kombinování různých typů výstupních dat (hodnoty shaderu pixelů, hloubky a informace vzorníku) s obsahem vyrovnávací paměti cíle vykreslení a hloubky nebo vzorníku za účelem vygenerování konečného výsledku kanálu.

Průvodce programováním pro Direct3D 10