Widoki uporządkowane rasteryzatorem
Widoki uporządkowane rasterizatorem (ROV) umożliwiają oznaczanie powiązań widoku dostępu bez kolejności (UAV) za pomocą deklaracji, która zmienia normalne wymagania dotyczące kolejności wyników potoku grafiki dla widoków UAV. Dzięki temu algorytmy przezroczystości niezależnej od kolejności (OIT) działają, co zapewnia znacznie lepsze wyniki renderowania, gdy wiele przezroczystych obiektów jest zgodnych ze sobą w widoku.
- — omówienie
- szczegóły implementacji
- podsumowania interfejsu API
- Tematy pokrewne
Przegląd
Standardowe potoki graficzne mogą mieć problemy z prawidłowym komponowanie ze sobą wielu tekstur, które zawierają przezroczystość. Obiekty takie jak ogrodzenia drutu, dym, pożar, roślinność i kolorowe szkło używają przezroczystości, aby uzyskać pożądany efekt. Pojawiają się problemy, gdy wiele tekstur, które zawierają przezroczystość, są zgodne ze sobą (dym przed ogrodzeniem przed szklanym budynkiem zawierającym roślinność, na przykład). Widoki uporządkowane przez rasterizatora (ROV) umożliwiają stosowanie podstawowych algorytmów OIT do używania funkcji sprzętu w celu poprawnego rozwiązania kolejności przezroczystości. Przezroczystość jest obsługiwana przez cieniowanie pikseli.
Widoki uporządkowane przez rasterizatora (ROV) umożliwiają znakowanie powiązań UAV za pomocą deklaracji, która zmienia normalne wymagania dotyczące kolejności wyników potoku grafiki dla widoków interfejsu użytkownika.
Widoki ROV gwarantują kolejność dostępu UAV dla każdej pary nakładających się wywołań cieniowania pikseli. W tym przypadku "nakładające się" oznacza, że wywołania są generowane przez te same wywołania rysowania i współużytkują tę samą współrzędną pikseli w trybie wykonywania częstotliwości pikseli, a także tę samą współrzędną pikseli i próbki w trybie częstotliwości próbkowania.
Kolejność wykonywania nakładających się wywołań cieniowania pikseli przez ROV jest taka sama jak kolejność przesyłania geometrii. Oznacza to, że w przypadku nakładających się wywołań cieniowania pikseli zapisy ROV wykonywane przez wywołanie cieniowania pikseli muszą być dostępne do odczytu przez kolejne wywołanie i nie mogą mieć wpływu na odczyty przez poprzednie wywołanie. Odczyty ROV wykonywane przez wywołanie cieniowania pikseli muszą odzwierciedlać zapisy przez poprzednie wywołanie i nie mogą odzwierciedlać zapisów przez kolejne wywołanie. Jest to ważne w przypadku widoków UAV, ponieważ są one jawnie pomijane z gwarancji wariancji danych wyjściowych zwykle ustawionych przez stałą kolejność wyników potoku grafiki.
Szczegóły implementacji
Widoki uporządkowane za pomocą rasterizatora (ROV) są deklarowane przy użyciu następujących nowych obiektów języka cieniowania wysokiego poziomu (HLSL) i są dostępne tylko dla cieniowania pikseli:
RasterizerOrderedBuffer
RasterizerOrderedByteAddressBuffer
RasterizerOrderedStructuredBuffer
RasterizerOrderedTexture1D
RasterizerOrderedTexture1DArray
RasterizerOrderedTexture2D
RasterizerOrderedTexture2DArray
RasterizerOrderedTexture3D
Użyj tych obiektów w taki sam sposób, jak inne obiekty UAV (takie jak RWBuffer
itp.).
Podsumowanie interfejsu API
RoVs to konstrukcja tylko HLSL, która stosuje różne semantyka zachowań do niezależnych interfejsów użytkownika. Wszystkie interfejsy API związane z wirtualnymi interfejsami użytkownika są również istotne dla roV. Należy pamiętać, że następująca metoda, struktury i klasa pomocnika odwołują się do rasterizatora:
- D3D12_RASTERIZER_DESC : struktura trzymająca opis rasterizatora.
- D3D12_FEATURE_DATA_D3D12_OPTIONS : struktura zawierająca wartość logiczną wskazującą obsługę.
- CheckFeatureSupport : metoda uzyskiwania dostępu do obsługiwanych funkcji.
- CD3DX12_RASTERIZER_DESC : klasa pomocnika do tworzenia opisów rasterizatora.
- D3D12_GRAPHICS_PIPELINE_STATE_DESC: struktura przechowującą stan potoku.
Tematy pokrewne
- konserwatywna rasteryzacja
- Renderowanie
- powiązanie zasobów w HLSL
- model cieniowania 5.1