Pour vous mettre dans le contexte j'ai fait ce petit éditeur en rapport à un jeu de Motion-Twin :
http://fevermap.org/kub3dit
(le jeu en question : http://kube.muxxu.com)
Ca marche pas trop mal, à l'exception du rendu des quelques cubes comportant de la transparence, par exemple sur cette carte.
Le moteur trie les chunks selon la position de la caméra, mais les vertices des chunks eux ne sont évidemment pas z-sortés constemment.
Du coup, la gestion de la transparence au sein d'un même chunk n'est pas bonne puisque potentiellement un pixel transparent sera écrit avant un pixel opaque bloquant son écriture par le Shader.
Si j'ai bien compris, dans ce genre de cas, l'idée est de procéder en deux rendus avec une première passe pour afficher les éléments opaques, et une seconde pour les transparents.
Le souci c'est que, à moins de ne gérer TOUS les cubes transparents comme un seul mesh j'aurais toujours le même problème de transparence au sein du calque transparent entre les divers chunks non?
Nicolas Canasse m'avait expliqué sa méthode pour gérer ce problème dans son jeu, et même si j'en comprends plus ou moins le principe, je n'arrive pas du tout à la mettre en place

Voici la formule magique telle qu'expliquée :
Citation
Pour la transparence il faut soit trier les triangles et faire une rendu back-to-front, soit (ce que je fais dans Kube) un premier pass qui affiche les blocks non transparents, puis un second pass qui écris juste dans le ZBuffer et un troiseme pass qui ajoute juste la transparence quand le Z est strictement égal.
Je coince un peu sur l'écriture dans le z-buffer et l'ajout de la transparence seulement si le Z est strictement égal.
J'ai tenté de jouer avec le setStencilActions en combo avec setDepthTest sans grand succès.
J'imagine que ça se passe donc plus au niveau du FragmentShader mais j'ai bien du mal à voir comment mettre ça en place.
Un chef de la 3D saurait expliquer ça au noob que je suis.?
