Rastrová zobrazení seřazená podle rasterizátoru
Rastrově uspořádaná zobrazení (ROV) umožňují kódu shaderu pixelů označit neuspořádané vazby zobrazení přístupu (UAV) deklarací, která mění běžné požadavky na pořadí výsledků grafického kanálu pro UAVs. To umožňuje, aby algoritmy transparentnosti nezávislé na pořadí (OIT) fungovaly, což dává mnohem lepší výsledky vykreslování, když je více průhledných objektů v zobrazení v souladu s ostatními.
- přehled
- podrobnosti implementace
- Souhrn rozhraní API
- související témata
Přehled
Standardní grafické kanály můžou mít problémy se správnou kompilací více textur, které obsahují průhlednost. Objekty, jako jsou drátěné ploty, kouř, oheň, rostliny a barevné sklo, používají průhlednost k dosažení požadovaného efektu. K problémům dochází v případě, že je více textur, které obsahují průhlednost, vzájemně v souladu (například kouř před plotem před skleněným objektem obsahujícím rostlinstvo). Rastrově uspořádaná zobrazení (ROV) umožňují základním algoritmům OIT používat funkce hardwaru k pokusu o správné vyřešení pořadí průhlednosti. Průhlednost je zpracována shaderem pixelů.
Rastrově uspořádaná zobrazení (ROV) umožňují kódu shaderu pixelů označit vazby UAV pomocí deklarace, která mění běžné požadavky na pořadí výsledků grafického kanálu pro UAVs.
RoV zaručuje pořadí přístupu UAV pro libovolnou dvojici překrývajících se pixelových vyvolání shaderu. V tomto případě "překrývající se" znamená, že vyvolání jsou generována stejnými voláními kreslení a sdílet stejnou souřadnici pixelů v režimu provádění frekvence pixelů a stejný pixel a vzorový souřadnice v režimu vzorkování frekvence.
Pořadí, ve kterém se překrývají přístupy ROV k vyvolání shaderu pixelů, je stejné jako pořadí, ve kterém je geometrie odeslána. To znamená, že pro vyvolání shaderu pixelů musí být zápisy ROV prováděné vyvoláním pixelového shaderu k dispozici pro čtení následným vyvoláním a nesmí mít vliv na čtení předchozím vyvoláním. Čtení ROV prováděná vyvoláním shaderu pixelů musí odrážet zápisy předchozího vyvolání a nesmí odrážet zápisy následným vyvoláním. To je důležité pro UAVs, protože jsou explicitně vynechány z záruky invariance výstupu obvykle nastavené pevným pořadím výsledků grafického kanálu.
Podrobnosti implementace
Rastrově uspořádaná zobrazení (ROV) jsou deklarována s následujícími novými objekty HLSL (High Level Shader Language) a jsou k dispozici pouze pro shader pixelů:
RasterizerOrderedBuffer
RasterizerOrderedByteAddressBuffer
RasterizerOrderedStructuredBuffer
RasterizerOrderedTexture1D
RasterizerOrderedTexture1DArray
RasterizerOrderedTexture2D
RasterizerOrderedTexture2DArray
RasterizerOrderedTexture3D
Tyto objekty používejte stejným způsobem jako jiné objekty UAV (například RWBuffer
atd.).
Souhrn rozhraní API
RoVs jsou konstruktor pouze HLSL, který používá různé sémantiky chování u UAVs. Všechna rozhraní API relevantní pro UAV jsou také relevantní pro rov. Všimněte si, že následující metoda, struktury a pomocné třídy odkazují na rasterizátor:
- D3D12_RASTERIZER_DESC : struktura držící popis rasterizátoru.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : struktura držící logickou hodnotu označující podporu.
- CheckFeatureSupport: metoda pro přístup k podporovaným funkcím.
- CD3DX12_RASTERIZER_DESC : pomocná třída pro vytváření popisů rasterizátoru.
- D3D12_GRAPHICS_PIPELINE_STATE_DESC: struktura držící stav kanálu.
Související témata
- konzervativní rasterizace
- rendering
- vazby prostředků v HLSL
- model shaderu 5.1