OpenGL 4.0 : tadam !
Rigolo, c'est toujours les personnes que je soupçonnais le moins de m'en informer qui m'en informent, c'est ainsi qu'une cygale me dit tout à l'heure sur IRC « tu as vu ? OpenGL 4.0 est sorti. cui cui. ». Ben non j'avais pas vu. Heureusement, l'information est fraîche, elle date d'aujourd'hui.
En fait ils sont malins chez Khronos, parce qu'ils ont compris que changer le numéro de version ça donnait l'impression aux gens que l'API évoluait beaucoup, même si c'est super faux. Ça me fait penser à certaines personnes qui ont oublié de réfléchir avant de dire « haha mais opengl c'est dépassé, il n'est qu'en version 2 alors que directx est en version 9 ! ». Haha. De même que la réaction de beaucoup de personnes lorsque OpenGL 3.0 est sorti qui ressemblait à « ah enfin des évolutions du côté d'OpenGL ! ».
Cette nouvelle version apporte des extensions amusantes mais n'est pas un changement aussi radical que l'a été OpenGL 3.1. Et là je vais vous apprendre un truc trop dingue, je ne me suis pas encore penché sur ces extensions et les ai encore moins essayé, je vais donc en décrire quelques unes brièvement et n'importe comment.
- Double précision des flottants dans les shaders (youpi.).
- Possibilité de passer les paramètres first, count et autres paramètres chiants via un buffer aux commandes de dessin (extension ARB_draw_indirect, fonctions DrawArraysIndirect() et DrawElementsIndirect(), type de buffer DRAW_INDIRECT_BUFFER). L'idée est évidemment de réduire les échanges CPU/GPU, surtout que avouez, ces paramètres en général ils sont tout le temps pareil alors autant utiliser un buffer OpenGL et laisser tout ça côté GPU sans y toucher trop.
- Nouvelle version du GLSL ! On kiffe.
- Support de nouveaux formats de textures à trois composantes comme RGB32F, RGB32I ou RGB32UI.
- Objets "transform feedback" qui enregistrent les options pour ce mode de rendu. En plus on peut faire de nouvelles choses avec le transform feedback, mais je vous en dirai pas plus, car je n'en sais pas plus !
- Nouveaux types de shaders pour la tessellation.
- Et d'autres trucs plus ou moins cool/utiles.
À noter aussi que les spécifications 3.3 sont également sorties. Me demandez pas pourquoi, j'en sais rien, peut-être par soucis de transition 3.x -> 4.x.
Je vous laisse déguster les subtilités sur le site d'OpenGL à l'adresse suivante.
http://www.opengl.org/registry/
PS: Le SCEngine n'est pas mort, et Spaceracer encore moins.
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 ».

