Sdílet prostřednictvím


Výběr prostředku

Prostředek je soubor dat, který používá 3D pipeline. Vytváření prostředků a definování jejich chování je prvním krokem k programování aplikace. Tato příručka popisuje základní témata pro výběr prostředků požadovaných vaší aplikací.

Identifikace fází kanálu, které potřebují prostředky

Prvním krokem je zvolit etapu (nebo etapy) grafického kanálu, která bude používat zdroj. To znamená, že identifikujte každou fázi, která bude číst data z prostředku, a také fáze, které budou zapisovat data do prostředku. Znalost fází potrubí, ve kterých budou prostředky použity, určuje rozhraní API, která budou volána k propojení prostředků s fází.

Tato tabulka uvádí typy prostředků, které je možné svázat s jednotlivými fázemi kanálu. Zahrnuje, jestli může být prostředek vázán jako vstup nebo výstup.

Fáze potrubí Vstup/Výstup Zdroj Typ prostředku
Vstupní assembler V Vertex buffer Vyrovnávací paměť
Vstupní assembler V Indexový buffer Vyrovnávací paměť
Stupně shaderu V Shader-ResourceView Buffer, Textura1D, Textura2D, Textura3D
Stupně shaderu V vyrovnávací paměť Shader-Constant Vyrovnávací paměť
Výstup streamu Venku Vyrovnávací paměť Vyrovnávací paměť
Sloučení výstupů Venku Zobrazení vykreslovacího cíle Buffer, Textura1D, Textura2D, Textura3D
Sloučení výstupů Venku Zobrazení hloubky nebo vzorníku Texture1D, Texture2D

 

Určení způsobu použití jednotlivých prostředků

Jakmile zvolíte fáze kanálu, které bude vaše aplikace používat (a proto prostředky, které každá fáze bude vyžadovat), dalším krokem je určit, jak se jednotlivé prostředky použijí, to znamená, jestli k prostředku může přistupovat procesor nebo GPU.

Hardware, na kterém běží vaše aplikace, bude mít minimálně jeden procesor a jeden GPU. Chcete-li vybrat hodnotu využití, zvažte, který typ procesoru potřebuje číst nebo zapisovat do prostředků z níže uvedených možností.

Využití prostředků Může být aktualizován Frekvence aktualizace
Výchozí Grafická procesorová jednotka (GPU) zřídka
Dynamický centrální procesorová jednotka (CPU) často
Příprava Grafická procesorová jednotka (GPU) není k dispozici
Neměnný Procesor (pouze při vytváření zdroje) není k dispozici

 

Výchozí režim by měl být použit pro prostředek, u kterého se očekává, že ho procesor bude aktualizovat zřídka (méně než jednou za snímek). V ideálním případě by procesor nikdy nezapisoval přímo do zdroje s výchozím využitím, aby se zabránilo možným ztrátám výkonu.

Dynamické využití by se mělo použít pro prostředek, který CPU aktualizuje relativně často (jednou nebo vícekrát za snímek). Typickým scénářem pro dynamický prostředek by bylo vytvořit dynamické vyrovnávací paměti vrcholů a indexů, které by se za běhu plnily daty o geometrii viditelné z pohledu uživatele pro každý snímek. Tyto vyrovnávací paměti by se použily k vykreslení pouze geometrie, která je viditelná uživateli v daném okamžiku.

Využití stagingu by se mělo použít ke kopírování dat do a z jiných zdrojů. Typickým scénářem je kopírování dat v prostředku s výchozím využitím (které procesor nemá přístup) k prostředku s přípravným využitím (ke kterému má procesor přístup).

Neměnné prostředky by se měly použít, když se data v prostředku nikdy nezmění.

Dalším způsobem, jak se podívat na stejnou myšlenku, je představit si, co aplikace dělá s prostředkem.

Jak aplikace používá prostředek Využití prostředků
Načíst jednou a nikdy neaktualizovat Neměnné nebo výchozí
Aplikace opakovaně spotřebovává zdroje. Dynamický
Vykreslení na texturu Výchozí
Přístup procesoru k datům GPU Příprava

 

Pokud si nejste jistí, jaké využití zvolit, začněte výchozím použitím, protože se očekává, že se jedná o nejběžnější případ. Paměť Shader-Constant je ten druh prostředku, který by měl mít vždy výchozí využití.

Přidělování prostředků ke stupňům řetězce

Prostředek může být vázán na více než jednu fázi kanálu současně, pokud jsou splněna omezení zadaná při vytvoření prostředku. Tato omezení jsou určena jako příznaky použití, příznaky svázání nebo příznaky přístupu k procesoru. Konkrétně lze prostředek vázat jako vstup a výstup současně, pokud čtení a zápis části prostředku nemůže probíhat současně.

Při vazbě prostředku se zamyslete nad tím, jak GPU a CPU přistoupí k prostředku. Prostředky, které jsou navrženy pro jeden účel (nepoužívají více příznaků pro využití, vazbu a přístup k procesoru), pravděpodobně povedou k lepšímu výkonu.

Představte si například případ cíle vykreslení, který se používá vícekrát jako textura. Může být rychlejší mít dva prostředky: cíl vykreslení a texturu použitou jako prostředek shaderu. Každý prostředek by používal pouze jeden příznak vazby označující „cíl vykreslení“ nebo „zdroj shaderu“. Data by se zkopírovala z textury vykreslovacího cíle do textury shaderu.

Tato technika v tomto příkladu může zlepšit výkon oddělením zápisu do cílového objektu vykreslování od čtení textury shaderu. Jediným způsobem, jak si být jisti, je implementovat oba přístupy a měřit rozdíl výkonu ve vaší konkrétní aplikaci.

Prostředky