Panda3D v1.9: un aperçu des nouveautés

Panda3D est un excel­lent petit moteur de jeu qui donne d’assez bons résul­tats. Bien enten­du, on ne le com­par­era pas au game engine de Blender, à Uni­ty ou à Unre­al Engine 4. Ce que j’aime chez lui, c’est qu’il est très sim­ple à appren­dre et qu’avec un petit script qu’on lance en ligne de com­mande (inter­pré­teur python), on arrive à faire de bons résul­tats. Le jeu tourne sans mod­i­fi­ca­tion sous Win­dows, Mac OS et Lin­ux. Il est égale­ment pos­si­ble de créer des jeux qui se jouent dans le nav­i­ga­teur web, mais au tra­vers d’un plu­g­in toute­fois (ce n’est pas du HTML5/WebGL).

J’avais réal­isé quelques maque­ttes de jeux avec, dont un jeu de com­bat d’avions — je met­trai prochaine­ment les sources du jeu sur ce blog.

Je ne vais pas vous présen­ter Pan­da, mais les nou­veautés qui sont annon­cées pour la ver­sion 1.9 (la ver­sion actuelle­ment télécharge­able est la 1.8.1)

 Le ren­du OpenGL a été grande­ment retra­vail­lé afin de pren­dre en compte les fonc­tion­nal­ités mod­ernes pro­posées par cette librairie:

  • sRGB sup­port (lin­ear pipeline): Les écrans d’or­di­na­teur repro­duisent les couleurs par syn­thèse addi­tive à par­tir de trois pri­maires. L’u­nité cen­trale envoie à l’écran, pour chaque point (pix­el), trois valeurs numériques cor­re­spon­dant à la lumi­nosité de chaque pri­maire à cet endroit.La norme sRGB établit des valeurs com­pat­i­bles avec la plu­part des écrans du com­merce, de sorte que les couleurs soient, avec les valeurs par défaut, suff­isam­ment bien représen­tées, lorsque aucune infor­ma­tion plus pré­cise n’est disponible. Au final, on obtient des images dont la lumi­nosité est opti­misée en fonc­tion de l’écran sur laque­lle elle est pro­jetée. Comme une image vaut mieux que cent dis­cours, voici 2 pho­tos prof­i­tant du phys­i­cal­ly-based ren­der­ing :ColorSpace-UncorrectedColorSpace-CorrectedLes infos tech­niques sont disponibles dans la doc­u­men­ta­tion.
  • Tes­sel­la­tion shaders : La tes­se­la­tion per­met d’a­jouter un mail­lage plus fin à un objet afin de per­me­t­tre des trans­for­ma­tions physiques, notam­ment au niveau des nor­mal maps. Dans l’ex­em­ple ci-dessous, le pavage d’un chemin est tout d’abord sub­di­visé, puis défor­mé par une tex­ture dite de “nor­mal map”  — le tout étant réal­isé automa­tique­ment par le GPU:

tessellated-displacement-870x489

  • Com­pute shaders: Sont désor­mais sup­port­és les ver­tex shaders, les pix­el shaders, mais égale­ment les geom­e­try shaders (dont la tes­se­la­tion fait par­tie)

sponza-reflection

  • Ren­der-to-tex­ture : Il est désor­mais pos­si­ble d’ef­fectuer le ren­du directe­ment dans des tex­ture arrays, des cube maps, et des tex­tures 3D.  Il est ain­si pos­si­ble d’op­ti­miser la ges­tion des ombres et d’ap­pli­quer par exem­ple plusieurs ombres sur un objet (provenant de plusieurs lam­pes) en une seule passe.
  • Stereo FBOs : Il y a longtemps que la ges­tion stéréo­scopique existe sous Panda3D, mais là, il s’ag­it d’op­ti­miser l’af­fichage pour des média comme l’Occu­lus Rift.
  • Debug­ging and pro­fil­ing : Des out­ils ont été ajoutés, et des amélio­ra­tion ont été apportées au sys­tème de débo­gage et de pro­fil­ing. Pstat s’en­ri­chit par exem­ple du pro­fil­er de GPU inter­ro­geant ain­si directe­ment le hard­ware, sans avoir à pass­er par une mesure de CPU.

pstats_gpu_timing

  • Divers: pas mal d’amélio­ra­tions en terme de per­for­mance, de ges­tion des cube­maps sans les traces de cou­ture (comme ci-dessous), une écri­t­ure plus aisée des GLSL shaders, etc.

seamless-cubemaps
Voilà, on oublie sou­vent qu’il y a pas mal de petits moteurs sym­pas qui sont beau­coup plus facile à pren­dre en main par les débu­tants que les out­ils dont on par­le le plus sou­vent. Per­son­nelle­ment, je trou­ve Panda3D très adap­té à l’en­seigne­ment de la pro­gram­ma­tion et de la 3D. C’est un moteur robuste, bien écrit, et qui béné­fi­cie du sou­tient des stu­dios Dis­ney et la Carnegie Mel­lon Uni­ver­si­ty.

 En atten­dant que cette ver­sion soit disponible (on peut déjà la tester en ver­sion bêta), Je vous laisse avec un petit paysage sous panda3D :

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.