Un ensemble de techniques pour éviter les commandes explicites s'appelle Order Independent Transparency (OIT pour faire court).
Il existe de nombreuses techniques OIT.
Historiquement, l'un est le peeling en profondeur . Dans cette approche, vous effectuez d'abord le rendu des fragments / pixels les plus en avant, puis vous trouvez le plus proche de celui trouvé à l'étape précédente et ainsi de suite, en continuant avec autant de "calques" que nécessaire. Cela s'appelle le peeling en profondeur car à chaque passage, vous "peler" une couche de profondeur. Toute votre couche peut ensuite être normalement recombinée d'arrière en avant. Pour implémenter cet algorithme, vous devez avoir une copie du tampon de profondeur.
Un autre ensemble de techniques sont les mélanges OIT. L'un des plus récents et des plus intéressants est l' OIT mélangé pondéré proposé par McGuire et Bavoil . Il applique essentiellement une somme pondérée pour toutes les surfaces qui occupent un fragment donné. Le schéma de pondération qu'ils proposent est basé sur l'espace de la caméra Z (comme approximation de l'occlusion) et l'opacité.
L'idée est que si vous pouvez réduire le problème à une somme pondérée, vous ne vous souciez pas vraiment de la commande.
Outre le document d'origine, une excellente ressource pour les détails de mise en œuvre et les problèmes de Weighted Blended OIT se trouve dans le blog de Matt Pettineo . Comme vous pouvez le lire dans son article, cette technique n'est pas une solution miracle. Le principal problème est que le système de pondération est central et doit être réglé en fonction de votre scène / contenu. D'après ses expériences, bien que la technique semble fonctionner correctement pour une opacité relativement faible et moyenne, elle échoue lorsque l'opacité approche 1 et ne peut donc pas être utilisée à partir de matériaux où une grande partie de la surface est opaque (il fait l'exemple du feuillage).
Encore une fois, tout se résume à la façon dont vous ajustez vos poids de profondeur et trouver ceux qui correspondent parfaitement à vos cas d'utilisation n'est pas nécessairement trivial.
Quant à ce qui est nécessaire pour l'OIT mixte pondéré, rien de plus que deux cibles de rendu supplémentaires. Celui que vous remplissez avec la couleur alpha prémultipliée (couleur * alpha) et alpha, tous deux pondérés en conséquence. L'autre pour les poids seulement.