Una serie di tecniche per evitare l'ordinamento esplicito va sotto il nome di Trasparenza indipendente dall'ordine (abbreviato OIT).
Esistono molte tecniche OIT.
Storicamente uno è Peeling di profondità . In questo approccio, prima visualizzi i frammenti / pixel più in primo piano, quindi trovi il più vicino a quello trovato nel passaggio precedente e così via, proseguendo con tutti i "livelli" di cui hai bisogno. Si chiama peeling di profondità perché ad ogni passaggio si "sbuccia" uno strato di profondità. Tutti i livelli possono quindi essere normalmente ricombinati da dietro a davanti. Per implementare questo algoritmo è necessario disporre di una copia del buffer di profondità.
Un altro insieme di tecniche sono quelle OIT di fusione. Uno dei più recenti e interessanti è l' OIT miscelato ponderato proposto da McGuire e Bavoil . In pratica applica una somma ponderata per tutte le superfici che occupano un dato frammento. Lo schema di ponderazione che propongono si basa sullo spazio fotocamera Z (come approssimazione all'occlusione) e sull'opacità.
L'idea è che se riesci a ridurre il problema a una somma ponderata, non ti importa davvero di ordinare.
Oltre al documento originale, nel blog di Matt Pettineo è disponibile una grande risorsa per dettagli di implementazione e problemi di Weighted Blended OIT . Come puoi leggere dal suo post, questa tecnica non è un proiettile d'argento. Il problema principale è che lo schema di ponderazione è centrale e deve essere regolato in base alla scena / al contenuto. Dai suoi esperimenti, mentre la tecnica sembra funzionare bene per un'opacità relativamente bassa e media, fallisce quando l'opacità si avvicina a 1 e quindi non può essere utilizzata da materiali in cui gran parte della superficie è opaca (fa l'esempio del fogliame).
Ancora una volta, tutto si riduce al modo in cui ottimizzi i tuoi pesi di profondità e trovare quelli che si adattano perfettamente ai tuoi casi d'uso non è necessariamente banale.
Quanto a ciò che è necessario per l'OIT miscelato ponderato, nient'altro che due target di rendering extra. Uno che si riempie con il colore alfa premoltiplicato (colore * alfa) e alfa, entrambi ponderati di conseguenza. L'altro solo per i pesi.