Eine Reihe von Techniken zur Vermeidung einer expliziten Bestellung wird als Order Independent Transparency (kurz OIT) bezeichnet.
Es gibt viele OIT-Techniken.
Historisch gesehen ist dies das Tiefenpeeling . Bei diesem Ansatz rendern Sie zuerst die vordersten Fragmente / Pixel, dann finden Sie diejenige, die der im vorherigen Schritt gefundenen am nächsten kommt, und fahren mit so vielen "Ebenen" fort, wie Sie benötigen. Es wird Tiefenschälen genannt, da Sie bei jedem Durchgang eine Tiefenschicht "schälen". Alle Ebenen können dann normalerweise von hinten nach vorne neu kombiniert werden. Um diesen Algorithmus zu implementieren, benötigen Sie eine Kopie des Tiefenpuffers.
Ein weiterer Satz von Techniken sind die OIT-Mischtechniken. Eine der neuesten und interessantesten ist die von McGuire und Bavoil vorgeschlagene Weighted Blended OIT . Grundsätzlich wird eine gewichtete Summe für alle Flächen angewendet, die ein bestimmtes Fragment belegen. Das von ihnen vorgeschlagene Gewichtungsschema basiert auf dem Kameraraum Z (als Annäherung an die Okklusion) und der Opazität.
Die Idee ist, dass, wenn Sie das Problem auf eine gewichtete Summe reduzieren können, Sie sich nicht wirklich für die Bestellung interessieren.
Im Gegensatz zum Originalpapier finden Sie in Matt Pettineos Blog eine hervorragende Quelle für Implementierungsdetails und Probleme mit Weighted Blended OIT . Wie Sie aus seinem Beitrag lesen können, ist diese Technik keine Wunderwaffe. Das Hauptproblem ist, dass das Gewichtungsschema von zentraler Bedeutung ist und entsprechend Ihrer Szene / Ihrem Inhalt angepasst werden muss. Aus seinen Experimenten geht hervor, dass die Technik bei relativ niedriger und mittlerer Opazität gut zu funktionieren scheint. Sie schlägt jedoch fehl, wenn die Opazität gegen 1 geht, und kann daher nicht für Materialien verwendet werden, bei denen ein großer Teil der Oberfläche opak ist (er macht das Beispiel von Laub).
Auch hier kommt es darauf an, wie Sie Ihre Tiefengewichte abstimmen, und es ist nicht unbedingt trivial, diejenigen zu finden, die perfekt zu Ihren Anwendungsfällen passen.
Was für die Weighted Blended OIT erforderlich ist, sind lediglich zwei zusätzliche Renderziele. Eine, die Sie mit der vormultiplizierten Alpha-Farbe (color * alpha) und Alpha füllen, die beide entsprechend gewichtet sind. Der andere nur für die Gewichte.