2016-07-13 11 views
0

Ich versuche, zwei Dreiecke in einem einzigen Drawcall zu zeichnen. Die zwei Dreiecke sind parallel. Und die Vorwärtsrichtung der Kamera ist entlang der Normalen dieser Dreiecke, die senkrecht zu beiden Dreiecken sind. Aus Sicht der Kamera sind die beiden Dreiecke perfekt überlappt.Rendern Pipeline Ausgabe Zusammenführungsreihenfolge

Die Alpha-Mischung ist aktiviert, wenn Blendop srcAlpha und invSrcAlpha ist. Die Farbe des Dreiecks im Rücken ist (0, 1, 0, 0.5), die Farbe des Dreiecks vorne ist (1, 0, 0, 0.5). Und der RT wird als schwarz gelöscht. Der Pixelshader gibt einfach die Dreiecksfarbe aus.

Hier ist ein Bild, um die Szene zu zeigen, die Eckpunkte von Dreiecken sind wie im Bild indiziert.

enter image description here

Was die endgültige Farbe in RT sein könnten, könnten alle (0,5, 0,25, 0) sein. Ist in der Grafikpipeline das Pixel des grünen Dreiecks vor dem roten Dreieck garantiert?

Antwort

0

Es sieht aus wie DirectX-Pipeline garantiert die Bestellung.

"DirectX-Rendering folgt einem strengen Regelwerk, das sicherstellt, dass Dreiecke immer in der Reihenfolge ihres Einreichens gerendert werden: Wenn sich zwei Dreiecke auf dem Bildschirm überlappen, garantiert die Hardware, dass das Farbresultat in Dreieck 1 dargestellt wird bevor Dreieck 2 verarbeitet und gemischt wird. "

Hier ist der Link https://software.intel.com/en-us/gamedev/articles/rasterizer-order-views-101-a-primer, und im Abschnitt "DirectX-Pipeline und die Einschränkungen von UAVs".

0

Sie geben keine Garantie auf die Reihenfolge der Pixelauswertung, hier können das rote und grüne pxel in beliebiger Reihenfolge ausgewertet werden. Genau ausgeführt werden in der Reihenfolge, in der die Dreiecke im Vertex/Index-Puffer angeordnet sind.

Es gibt eine Funktion namens Rasterizer Order Views, Dokumentation here. Aber erstens hängt es von einer optionalen Funktion ab und zweitens, es kann nur eingeschaltet werden, wenn Sie eine ungeordnete Zugriffsansicht verwenden, dies ist hier nicht der Fall, wenn Sie einfach die Ausgabeverschmelzung verwenden, um die Beispiele zu schreiben.