fáze Stream-Output
Účelem fáze výstupu datového proudu je nepřetržitě vytvářet výstupy (nebo streamovat) data vrcholů z fáze geometry-shader (nebo fáze vertex-shader, pokud je fáze geometry-shader neaktivní) do jedné nebo více vyrovnávacích pamětí v paměti (viz Začínáme s Stream-Output fáze).
Fáze výstupu datového proudu (SO) se nachází v kanálu přímo po fázi geometry-shaderu a těsně před fází rasterizace, jak je znázorněno v následujícím diagramu.
Data streamovaná do paměti je možné číst zpět do kanálu v následném průchodu vykreslování nebo je můžete zkopírovat do přípravného prostředku (aby je mohl číst procesor). Množství dat streamovaných dat se může lišit; rozhraní API ID3D11DeviceContext::D rawAuto API je určeno ke zpracování dat bez nutnosti dotazování (GPU) o množství zapsaných dat.
Pokud je trojúhelník nebo pruh čáry svázán s fází vstupního assembleru, každý pruh se před datovým proudem převede na seznam. Vrcholy se vždy zapisují jako úplné primitivy (například 3 vrcholy najednou pro trojúhelníky); neúplné primitivy nejsou nikdy streamovány. Primitivní typy s sousedstvím zahodí data sousedství před streamováním dat.
Existují dva způsoby, jak streamovat výstupní data do kanálu:
- Výstupní data streamu je možné přenést zpět do fáze vstupního assembleru.
- Výstupní data streamu lze číst programovatelnými shadery pomocí funkcí načítání (například Load).
Pokud chcete jako výstupní prostředek streamu použít vyrovnávací paměť, vytvořte vyrovnávací paměť s příznakem D3D11_BIND_STREAM_OUTPUT. Fáze výstupu datového proudu podporuje až 4 vyrovnávací paměti současně.
- Pokud streamujete data do více vyrovnávacích pamětí, každá vyrovnávací paměť může zachytit pouze jeden prvek (až 4 komponenty) dat vrcholů, přičemž implicitní datová strid se rovná šířce prvku v každé vyrovnávací paměti (kompatibilní se způsobem, jakým mohou být vyrovnávací paměti jednoho prvku vázány pro vstup do fází shaderu). Navíc pokud mají vyrovnávací paměti různé velikosti, zápis se zastaví, jakmile je některý z vyrovnávacích pamětí plný.
- Pokud streamujete data do jedné vyrovnávací paměti, může vyrovnávací paměť zachytit až 64 skalárních komponent dat na vrchol (256 bajtů nebo méně) nebo vrcholové stridy může být až 2048 bajtů.
V této části
Námět | Popis |
---|---|
Začínáme s Stream-Output fází |
Tato část popisuje, jak používat shader geometrie s výstupní fází streamu. |
Související témata
-
fáze kanálu (Direct3D 10)