Les particules arrivent

Posté le 6 décembre 2008, dans Développement.

Ça fait quelque temps que je n’ai rien posté car j’étais en train de bosser sur une grosse partie : le moteur de particules. J’ai passé pas mal de temps sur la conception pour avoir quelque chose de suffisamment flexible, et j’ai ensuite perdu du temps avec une technique sensée m’en faire gagner : les Point Sprites.

Il s’agit d’un mode de rendu qui permet d’afficher facilement des particules, simplement en envoyant à la carte graphique des coordonnées pour chaque particule, et une texture à afficher. Direct3D s’occupe alors de créer des quads texturés (une sorte de panneau carré) et de les orienter pour qu’ils soient toujours face à la caméra. Dans la théorie c’est super, mais dans la pratique c’est très limité quand on l’utilise avec des techniques de rendu un peu avancées comme le Deferred rendering, car il est impossible de passer des informations depuis le vertex shader vers le pixel shader. Il m’était donc impossible de gérer la profondeur, et les particules étaient visibles à travers les objets solides.

Avec les point sprites, les particules pourtant situées sous les vaisseaux sont visibles à travers :

J’ai donc du abandonner cette technique et utiliser le Billboarding, qui consiste à générer les quads à la main et les orienter (à la main aussi, mais dans le vertex shader). Le problème est que je passe beaucoup plus d’informations à la carte graphique, ce qui est moins performant, mais au moins ça fonctionne.

Le rendu avec le Billboarding, les particules sont correctement masquées par les vaisseaux :

La partie graphique étant au point, il ne reste plus qu’à gérer la dynamique des particules, mais ça devrait être beaucoup plus rapide.



Laisser un commentaire

Security Code: