Rasterungsreihenfolgeansichten
Rasterizer Ordered Views (ROVs) ermöglichen es Pixel-Shadercode, UAV-Bindungen mit einer Deklaration zu markieren, die die normalen Anforderungen für die Reihenfolge der Grafikpipelineergebnisse für UAVs ändert. Dadurch können OIT-Algorithmen (Order Independent Transparency) funktionieren, die viel bessere Renderingergebnisse liefern, wenn mehrere transparente Objekte in einer Ansicht miteinander in Einklang stehen.
Übersicht
Standardgrafikpipelines haben möglicherweise Probleme beim ordnungsgemäßen Kompositieren mehrerer Texturen, die Transparenz enthalten. Objekte wie Drahtzäune, Rauch, Feuer, Vegetation und farbiges Glas verwenden Transparenz, um den gewünschten Effekt zu erzielen. Probleme treten auf, wenn mehrere Texturen, die Transparenz enthalten, miteinander in Einklang stehen (z. B. Rauch vor einem Zaun vor einem Glasgebäude mit Vegetation). Rasterizer Ordered Views (ROVs) ermöglichen es den zugrunde liegenden OIT-Algorithmen, Features der Hardware zu verwenden, um die Transparenzreihenfolge richtig aufzulösen. Die Transparenz wird vom Pixel-Shader verarbeitet.
Rasterizer Ordered Views (ROVs) ermöglichen es Pixel-Shadercode, UAV-Bindungen mit einer Deklaration zu markieren, die die normalen Anforderungen für die Reihenfolge der Grafikpipelineergebnisse für UAVs ändert.
ROVs garantieren die Reihenfolge der UAV-Zugriffe für jedes Paar von sich überlappenden Pixel-Shaderaufrufen. In diesem Fall bedeutet "Überlappung", dass die Aufrufe von denselben Zeichnungsaufrufen generiert werden und die gleiche Pixelkoordinate im Ausführungsmodus der Pixelfrequenz und dasselbe Pixel und die gleiche Beispielkoordinate im Beispielfrequenzmodus verwenden.
Die Reihenfolge, in der sich überlappende ROV-Zugriffe von Pixel-Shaderaufrufen ausgeführt werden, ist identisch mit der Reihenfolge, in der die Geometrie übermittelt wird. Dies bedeutet, dass für überlappende Pixel-Shaderaufrufe ROV-Schreibvorgänge, die von einem Pixel-Shaderaufruf ausgeführt werden, verfügbar sein müssen, um von einem nachfolgenden Aufruf gelesen zu werden, und dürfen sich nicht auf Lesevorgänge durch einen vorherigen Aufruf auswirken. ROV-Lesevorgänge, die von einem Pixel-Shaderaufruf ausgeführt werden, müssen Schreibvorgänge eines vorherigen Aufrufs widerspiegeln und dürfen keine Schreibvorgänge durch einen nachfolgenden Aufruf widerspiegeln. Dies ist für UAVs wichtig, da sie in den Ausgabeinvarianzgarantien explizit weggelassen werden, die normalerweise durch die feste Reihenfolge der Ergebnisse der Grafikpipeline festgelegt werden.
Details zur Implementierung
Rasterizer ordered views (ROVs) werden mit den folgenden neuen HLSL-Objekten (High Level Shader Language) deklariert und sind nur für den Pixel-Shader verfügbar:
RasterizerOrderedBuffer
RasterizerOrderedByteAddressBuffer
RasterizerOrderedStructuredBuffer
RasterizerOrderedTexture1D
RasterizerOrderedTexture1DArray
RasterizerOrderedTexture2D
RasterizerOrderedTexture2DArray
RasterizerOrderedTexture3D
Verwenden Sie diese Objekte auf die gleiche Weise wie andere UAV-Objekte (z RWBuffer
. B. etc.).
API-Zusammenfassung
ROVs sind ein reines HLSL-Konstrukt, das unterschiedliche Verhaltenssemantik auf UAVs anwendet. Alle APIs, die für UAVs relevant sind, sind auch für ROVs relevant. Beachten Sie, dass die folgende Methode, Strukturen und Hilfsklasse auf den Rasterisierer verweisen:
- D3D11_RASTERIZER_DESC2 : Struktur, die die Rasterisiererbeschreibung enthält, wobei die CD3D12_RASTERIZER_DESC2 Hilfsklasse zum Erstellen von Rasterisiererbeschreibungen notiert wird.
-
D3D11_FEATURE_DATA_D3D11_OPTIONS2 : Struktur, die den booleschen
ROVsSupported
Wert enthält, der die Unterstützung angibt. - ID3D11Device::CheckFeatureSupport : -Methode für den Zugriff auf die unterstützten Features.
Zugehörige Themen