Sdílet prostřednictvím


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

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: