Le principal défi de ce projet résidait dans l'optimisation des performances et la gestion du CPU.

Une approche naïve aurait consisté à instancier un système de particules indépendant pour chaque arête du modèle 3D, ce qui aurait instantanément saturé le navigateur sous le poids de milliers de Draw Calls. Pour surmonter cette limite, le challenge a été de centraliser l'intégralité de l'effet au sein d'un seul et unique système de particules géré par le GPU. En analysant la géométrie en amont pour extraire les paires de vertices (départ/arrivée), toutes les données ont été injectées dans des attributs WebGL personnalisés.

C'est ensuite un Custom Vertex Shader qui orchestre, en parallèle et à 60 FPS constants, l'interpolation linéaire (Lerp), les variations de vitesse et le décalage temporel de chaque particule. Le résultat offre un rendu organique et hypnotique, totalement fluide, même sur les maillages complexes.

Mes autres projets

Retour