Particles engine, screenshot à l'appui !
Lors de ma dernière semaine passée chez Ban, du 19 au 26 août, je n'ai pas chômé : après trois jours consacrés au déboguage du moteur suite aux nouvelles fonctionnalités et aux grosses modifications majeures (geometry, vertex arrays & VAO, sphere & box, etc.) j'ai utilisé les jours qu'il me restait à concocter un petit gestionnaire de particules.
Bref maintenant que ma vie est racontée et que j'ai précisé implicitement que le développement du moteur de particules ne m'a pris que quatre jours (oups voilà qui est fait explicitement), je peux passer aux descriptions techniques.
J'exploite donc le nouveau module de géométrie du moteur afin de stocker les particules d'un système. Je propose de définir une taille maximale, c-à-d un nombre limite de particules que le moteur se charge ensuite de remplir à sa guise suivant le débit choisi, etc. Il est possible de demander l'allocation d'espace supplémentaire en mémoire pour chaque particule et ainsi y stocker des données bonus. Enfin la spécification du mouvement et du comportement des particules est entièrement personnalisable par la création de "modifiers" qu'il est possible de combiner. Une fois la géométrie gérée comme bon nous semble, il suffit de créer un mesh avec cette géométrie et lui assigner des matériaux ou des textures comme bon nous semble. Un résultat basique ci-contre, avec blending additif évidemment. Le screenshot a été pris sur mon misérable ordinateur portable, donc je ne peux rien dire à propos des performances ; il faut dire qu'un Poulsbo sous Linux n'est absolument pas représentatif des performances pouvant être atteintes (ou pas) par un rendu 3D. Il faudra demander à Ban de faire des petits tests, ou même à vous si vous êtes intéressés, rien ne vous empêche de me contacter.
En note de fin, je souhaiterais souligner que je me suis beaucoup inspiré de SPARK pour l'architecture du gestionnaire de particules, si vous ne connaissez pas encore ce projet je vous suggère de le découvrir !
À la prochaine !
P.S. Votre serviteur étant encore en vie, il vous propose plus de médias en rapport avec les particules et vous les laisse découvrir.
Catalyst 9.8 : enfin des geometry shaders !
Comme espéré dans la dernière news, l'ajout des geometry shaders aux dernières spécifications d'OpenGL inciterait sûrement ATI à les implémenter dans leurs drivers, et c'est chose faite !
Les Catalyst 9.8 ajoutent également le support des uniform buffers et de quelques autres extensions.
Malheureusement, toujours aucun support des noyaux Linux 2.6.29+ ne semble présent. Je me demande s'ils ont un « mail des réclamations ».
OpenGL 3.2 : et on enchaîne
Vous avez bien lu, peu de temps après OpenGL 3.1 c'est la version 3.2 qui fait son apparition.
Visiblement ils n'ont pas traîné chez Khronos, et autant dire que ça ne nous dérange pas outre mesure à la vue du menu :
- Geometry shaders (enfin) ;
- GLSL 1.50 ;
- Et des trucs trop inutiles genre draw_element_base_vertex ou vertex_array_bgra.
Bref, les tant regrettés geometry shaders dans OpenGL 3.1 ont été ajoutés dans cette version 3.2, et ça nous fait bien plaisir car ATI va maintenant se sentir obligé de les implémenter (enfin espérons-le).

