methos69006 a écrit :
Afficher les opaques avant ( dans le code )ca va, mais comment trier les polygon transparent ? Ainsi Je voulais connaitre les différentes manières de trier les polygons autre que le BSP qui me semble inutil car ma scene ne comporte pas des multitudes de polygons (ce n'est pas une scene ou l'on se ballade a perpete)
Est ce encore et toujours uniquement une histoire de Z-buffer
|
Tu n'es pas obligé de trier par polygone. Essaie d'abord un tri par objet et si le résultat ne te plait pas il faudra passer à autre chose ou changer ton contenu.
Beaucoup de jeux se contentent d'avoir des artefacts (GTA), ou d'éliminer le problème en limitant la transparence à quelques objets.
Ce qu'on voit habituellement:
- nombre de surfaces transparentes très limitées, par exemple à de l'eau ou quelques vitres. Par ailleurs certains de ces cas, gèrent la transparence en faisant un rendu dans une texture préalable du background et en utilisant cette texture pour texturer l'objet transparent (ça nécessite de trier uniquement par rapport à l'objet transparent).
- effets spéciaux indépendants de l'ordre de rendu. Ça peut être un systeme de particules de fumées quasi monochrome (dans ce cas c'est l'accumulation qui compte, les artefacts liés à l'ordre de tracé sont réduits). Ou encore un systeme de particules de feu tracés en additif (je crois que c'est BLEND_ONE, BLEND_ONE en OGL meme si ça fait longtemps que j'en ai plus fait). Dans ce dernier cas l'ordre n'a aucune importance et tu peux meme utiliser le canal alpha pour varier l'intensité. Le problème par contre c'est que ça sature assez rapidement et que l'effet n'est pas toujours aussi réaliste que l'on voudrait. Beaucoup de jeux font ça pour les effets de sorts/armes etc...
Le problème du tri en général n'est pas soluble facilement.
J'indiquais le papier de "sort independent transparency" dans l'autre topic. C'est l'une des seules solutions "complete" que je connaisse. Subdiviser les polygones (avec ton BSP), en est une autre. N'utilise cela qu'en dernier recours !