Author Topic: Performances d'Hyperion  (Read 4140 times)

0 Members and 1 Guest are viewing this topic.

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2385
    • oZone3D.Net
Performances d'Hyperion
« on: January 18, 2007, 09:23:47 AM »
Voila, suite au topic de Micka ( http://www.ozone3d.net/smf/index.php/topic,238.msg697.html#msg697 ), je me suis amus√© √  comparer un peu les performances d'Hyperion avec un autre moteur 3d. J'ai choisi pour cette operation le moteur Irrlicht v1.2 (disponible ici: http://irrlicht.sourceforge.net). Ce moteur offre plusieurs renderers dont un OpenGL. Hyperion utilisant un renderer OpenGL, il est important d'effectuer la comparaison avec un renderer de m√™me nature. De plus Irrlicht est fourni avec un petit viewer de mod√®les 3d. C'est cool, ca √©vite de se plonger dans le sdk et de pondre une appz de test juste pour ce petit test.

Alors le but est de charger le modèle Cell.3DS (dispo ici: http://www.ozone3d.net/repository_medias_models.php ).
Par défaut Irrlicht affiche une skybox comme décor de fond, alors je l'ai aussi ajoutée dans la demo Hyperion.

Voil√  le r√©sultat dans le viewer Irrlicht:



Le nombre de FPS est d'environ 390.
Il faut noter qu'il n'y a pas d'éclairage dynamique.

Passons maintenant à Hyperion. Avec les réglages par défaut, la scène tourne à 60 FPS.
C'est tout ???
Par défaut, la synchronisation verticale ou VSYNC est activée, ce qui limite le nombre de FPS à la fréquence de rafraichissement vertical de l'écran. Dans beaucoup de cas avec un écran plat, cette fréquence est de 60 Hz. Okay, alors désactivons cette VSYNC. Cela se passe dans le noeud scene:

Code: [Select]
<scene name="myScene" vsync="FALSE" / >

La sc√®ne tourne maintenant √  160 FPS. C'est deja un peu mieux. Mais peut on faire mieux? OUI.
Il suffit pour ça, d'utiliser les VBO ou vertex buffer object.
Pour plus d'info sur les VBO, voir le tuto suivant: http://www.ozone3d.net/tutorials/opengl_vbo.php

Par défaut, les VBO ne sont actifs.

L'activation des VBO se fait avec l'attribut use_vbo au niveau du noeud model:
Code: [Select]
<model name="myModel" filename="data/cell/cell.3DS"
       lighting="FALSE" texturing="TRUE"
   use_vbo="TRUE" >
</model>

Et là hop, les perfs montent à envion 800 FPS.




Mais cette comparaison est à prendre avec des pincettes, car en regardant un peu dans les sources d'Irrlicht, j'ai comme l'impression que le moteur Irrlicht n'utilise pas les VBO. Un peu dommage c'est pourtant bien pratique pour booster à moindre frais les performances.

Conclusion: Hyperion est un moteur 3D scriptable qui, une fois un minimum maitrisé, permet d'obtenir des performances très honnêtes. Mais comme toujours, tout dépend de la complexité de la scène. Il est évident qu'avec de la déformation de mesh via LUA, avec des reflections et des particules et autres effets, nous serons loin des 800 FPS. Mais que tant ca reste fluide pour l'utilisateur, c'est l'essentiel.

Et voila pour vous amusez avec, la démo de test Hyperion: [DOWNLOAD]