Bienvenue sur le site officiel du SCEngine

Le SCEngine est un moteur 3D programmé, comme son nom l'indique, en langage C. Il est libre, open-source, et distribué sous licence GNU GPL. Il utilise exclusivement l'API OpenGL pour le rendu.

OpenGL 4.0 : tadam !

Par Yno le 11/03/2010 à 22:51 – édité par Yno le 11/03/2010 à 23:00

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 !

Par Yno le 02/09/2009 à 08:14 – édité par Ban le 03/09/2009 à 02:16

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.

First particles test, looks awesome!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 !

Par Yno le 17/08/2009 à 10:15

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 ».

Dernière version

La version 0.0.9a est disponible !

Développement

04/04/2008 à 23h57

Corrections de bugs à plusieurs niveaux. Dès qu'on utilise son moteur un peu plus sérieusement on se rend vite compte que ça déconne de partout :D

03/04/2008 à 18h19

Mise à jour du gestionnaire de scènes avec possibilité de spécifier des callbacks pour les fonctions de rendu et création de fonction de gestion du rendu basiques.

26/03/2008 à 20h09

Ajout de la possibilité de mettre à jour plusieurs vertex buffers de façon unifiée.

25/03/2008 à 22h16

Implémentation des point sprites.

23/03/2008 à 23h45

Implémentation côté coeur des occlusion queries, il est maintenant possible de faire une requête d'occlusion le plus simplement du monde.

23/03/2008 à 19h38

Les lumières implémentent maintenant les nodes, ce qui les rend "presque" comme tous les autres objets de la scène.

23/03/2008 à 10h24

Implémentation d'une fonction de rendu de scène très basique (gestoin des lumières et du frustum culling), mais maintenant au moins je pourrais m'appuyer sur quelque chose pour concevoir un gestionnaire de scènes polyvalent.

14/03/2008 à 23h27

Suppression du support des shaders ASM. Implémentation d'un système d'éclairage 100% par shaders.

11/03/2008 à 21h59

Ajout de deux modules : module de gestion des lumières OpenGL & module de gestion d'états.

01/03/2008 à 02h00

Changement intégral du système de fonctionnement du module de gestion des bounding box & ajout de la possibilité d'appliquer une matrice à une bounding box, très utile pour ne pas avoir à recalculer le frustum en fonction de la matrice d'un objet.

29/02/2008 à 19h52

Encore un ajout de modules :
- (utils) un gestionnaire de plans ;
- (interface) un gestionnaire de bounding box ;
- (interface) un gestionnaire de frustum.
Le premier et le dernier module sont pour l'instant pourvus de peu de fonctionnalités, mais permettent toutefois la gestion d'un frustum culling de façon satisfaisante :)

27/02/2008 à 15h43

Implémentation de deux modules : un gestionnaire de segments de droites et un autre de rectangles. Ils sont testés et fonctionnent correctement.

24/02/2008 à 00h54

Fonction de création d'un mesh formant un parallélépipède rectangle ajoutée. Ajout également d'une fonction (basée sur la précédente) de création d'un mesh à partir de la bounding box d'un autre mesh.

23/02/2008 à 00h59

Ajouts de deux fonctions au gestionnaire de meshs permettant de calculer la bounding box et la bounding sphere d'un mesh.

21/02/2008 à 23h37

Ajout de fonctions permettant de récupérer la couleur d'un matériau. Gestion primaire du blending ajouté.

20/02/2008 à 23h17

Ajout de deux fonctions de manipulation des matrices : Projection, permet de construire une matrice de projection en perspective conique, et LookAt, analogue à gluLookAt.