Voici mon premier petit travail avec Irrlicht. J'ai tenté d'adapter une partie du mon moteur de terrain.
Pour cela, j'ai fait appel à des fonctions 100% Irrlicht, même si cela m'a fait perdre pas mal en
optimisation. Ceci dit, cela tourne finalement pas trop mal. Avec les réglages adaptés, on s'en sort plutôt
pas mal. A titre d'exemple, l'exe tel quel fournis, tourne au dessus de 100 fps sur un de mes petit
portable plutot modeste au regard des critaires actuel (ATI 9700 Mobility + Pentium 1.6 Ghz)
Voila, à vous de tester, de critiquer et de soumettre pour améliorer le truc. En sachant
déjà que:
- l'archive contient un exe, pas besoin de compiler pour voir ce que cela donne,
- Touche ESC pour sortir,
- Touche S pour changer le type de Rendu des Material des Quads,
- Touche T pour le test de la fonction de re-texturation,
- touche de directions pour deplacer la camera, qui est asservie à la hauteur de terrain.
et que:
- je découvre Irrlicht, je tâtonne encore, donc il y a certainement des choses à dire quand à mon
code et mon approche,
- le code est plus volumineux que par exemple celui de Copland pour son moteur.
- le calcul des normales par la fonction native d'Irrlicht n'applique pas vraiment de smoothing,
donc il va falloir que je ponde une routine maison.
c'est ici: http://www.IrrDream.fr/_files/irrDreamTerrain0_1_1.zip
Je vais voir pour améliorer, et faire un test en incorporant cette fois un code 100% directX9c, pour
voir ce que cela apporte en terme de vitesse (même si du coups on perd le coté universelle de code
dans ce cas).
Dernière modification par tmyke (08-06-2008 09:56:51)
Hors ligne
C'est pas mal du tout et il charge les grande heightmaps ce qui est un bon point.
Par contre niveau performance, 246 fps max sur ma bécane...
Hors ligne
A titre de comparaison, et si j'enlève le lutin et son ombre qui bouffe du fps, avec un terrain de
1024 tiles et de 8192 de taille, je tourne à en moyenne 1200 fps avec DX9 et 520 avec OGL, sur
ma machine principale (en signature), et je reste a plus de 270 fps sur ma vieille ATI 9700 pro avec
DX9 et au dessus de 300 avec OGL.
Ceci dit, c'est améliorable, je pense, je vais pinailler mon code pour cela
Hors ligne
J'aime vraiment bien, je voulais me lancer dans un gestionnaire de terrain et je n'avais aucune idée de comment faire.
Je vais m'inspirer de la structure du tien si ça ne te dérange pas.
Hors ligne
Non, pas de soucis bien sûr.
D'ailleurs si mon code est un peu confus parfois, n'hésite pas à demander, je m'efforcerais d'expliquer les points obscures.
Et ce code est en plus très certainement largement améliorable
Dernière modification par tmyke (01-04-2008 12:55:35)
Hors ligne
Heu y'a un hic, pourquoi ça rame comme ça chez moi ?
Je suis sous vista et j'ai rencontré des soucis avec vista et irrlicht au niveau perfs, vais le recompiler en SVN pour voir si ça marche mieux.
Hors ligne
Copland :
...Je suis sous vista et j'ai rencontré des soucis avec vista et irrlicht au niveau perfs, ...
As tu le même problème en fullscreen, ou tu rencontre de soucis de vitesse qu'en mode fenêtrée ?
C'est assez étrange dans la mesure ou ton matériel est relativement proche du miens...
Dernière modification par tmyke (01-04-2008 22:27:54)
Hors ligne
Bon j'ai recompilé avec la SVN qui marche parfaitement chez moi et je n'ai vu aucune amélioration, j'ai viré le nain et désactivé les stencil et j'ai 343/362 fps, j'ai tenté en mode plein écran 800*600,1024*768 et ça ne change rien au performance ou à peine.
Si t'a une idée de ce que je peux tenter d'autre.
Hors ligne
Cela semble varier pas mal d'une machine à l'autre, visiblement. Et pas seulement le moteur de Terrain, mais les prog Irrlicht d'une façon générale.
J'ai fait un petit Bench avec quelques samples du package d'Irrlicht, je mettrait le Bench en ligne dans la soirée ainsi
que les résultats pour 3 de mes machines, pour faire des comparatif
Pour ce qui te concerne, pas d'idée plus que cela. Je dirais aussi, que vue que tous les mesh sont centralisé en mémoire systeme, la vitesse de rendu est donc lié à la vitesse de dialogue entre la carte video et la RAM system, donc des qualité de ta carte mère et de ses périphérique directes (gestion PCI Express, qualité de la RAM, etc...)
Dernière modification par tmyke (02-04-2008 18:38:23)
Hors ligne
Bon, comme promis, j'ai codé vite fais un petit bench, qui n'est rien d'autre
que la compilation des 3 samples bien connu du monde Irrlicht, et un dernier
avec le moteur de Terrain. C'est ici:
http://www.IrrDream.fr/_files/IrrBench_v1.zip
Voici les résultats sur trois de mes machines: (plus le chiffre est bas, mieux c'est )
(fenetré)D3D9-(pleinEcran) (fenetré)OpenGL(pleinEcran)
Q6600 2.4Gz +NVidia 8800GTX 768Mo (Vista): 5000 / 5366 | 7000 / 6972
E7200 2.2 Gz + NVidia 7400 256Mo (Vista) : 32800 / 29660 | 24800 / 21800
Pentium M 1.7Gz + ATI 9700 pro 128Mo (XP) : 33490 / 30100 | 36740 / 35900
Première conclusion, la première config, très puissante entère sans problèmes les deux autres,
normal, les composant interne (outre la carte video tiptop), comme sur tous les DELL XPS, sont
haut de gamme, ce qui se sent très vite.
Deuxième conclusion, la conf 3 bien que plutôt dépassé, s'en sort bien face à la conf 2 plus
récente et plus moderne. Alors que d'une façon générale, la conf 2 prend facilement le pas sur
la conf 3. A titre d'exemple, COD4 tourne bien sur la conf 2, ce qui n'est pas le cas sur la
conf 3.
Dans les trois cas, les derniers drivers ont été employés.
Dernière modification par tmyke (02-04-2008 20:39:53)
Hors ligne
je pensait a utiliser ton moteur de terrain pour mon projet si cela bien sur ne te pose aucun souci :p
personnellement je ne connait pas dit tout la méthode pour faire un moteur de terrain
si par éventualité tu refusait ... je m'en inspirerais niveaux structure de class
bon alors sinon pour ton bench résulta j'ai obtenue 76908 Oo avec une ati 9200 se et un proc de 1.6 je n'est pas tester sur l'autre pc ( unix )
teste avec un geforce 6600 GS 19700 ( opengl ), 17738 ( D3D9 )
sinon beau travaille
Dernière modification par Magun (30-12-2008 05:24:06)
Hors ligne
Magun :
je penssait a utiliser ton moteur de terrain pour mon projet si cela bien sur ne te pose aucun souci :p
pas de soucis pour moi, tu peux employer mon code dans ton projet.
Quand à ta 9200se, il est certains qu'elle doit commencer à avoir du mal dans certaines situation...
Dernière modification par tmyke (03-04-2008 21:22:23)
Hors ligne
je t'en remerci
j'ai tester sous unix avec wine mais rien ne se passe :-|
domage gaurais bien aimer voir les resultat c'est mon meilleur pc ... snif :p
Hors ligne
Pour le bench, effectivement, l'exe étant pour windows, je ne suis pas surpris du soucis, même avec wine.
Désolé
Hors ligne
j'arrivais a faire tourner ragnarok sans soucis au paravans enfin bon tempis :p
egalement qu'elle que truc sous irrlicht
Hors ligne
Comme promis, voici une version spécifique DX9c, avec MeshBuffer. De par le fait, on perd le coté multiplateforme, mais bon, cela peut se révéler utile pour certains. De plus, cela m'a permit de voir un petit peu comment faire cohabiter DX9 et Irrlicht avec du code externe (sans donc avoir à toucher au moteur). Je continuerais sur cette voie peut-etre par la suite. Donc cela doit je pense apporter pour certaines cartes video un plus en terme de vitesse.
Comme pour le premier code, à vous de tester, de critiquer et de soumettre pour améliorer le truc. En sachant
déjà que:
- l'archive contient un exe, pas besoin de compiler pour voir ce que cela donne,
- Touche ESC pour sortir,
- Touche S/D pour changer le type de Rendu des Material des Quads,
- Touche T pour le test de la fonction de re-texturation,
- touche de directions pour deplacer la camera, qui est asservie à la hauteur de terrain.
c'est ici: http://www.IrrDream.fr/_files/irrDreamTerrainDX.zip
Pour la suite éventuelle, je vous laisse entre les mains de mon comparse de longue date, MorpheusDX, qui m'a bien aidé pour ecrire tous mes codes...
A++ peut-être...
Dernière modification par tmyke (08-06-2008 09:55:57)
Hors ligne
Bon comme promis, voici une mise à jour de mon petit code irrDreamTerrain avec mon propre calcul de frustum culling. Les résultats
en terme d'optimisation sont au rendez-vous, ce qui me rassure quelque part
Petit rappel donc:
- l'archive contient un exe, pas besoin de compiler pour voir ce que cela donne,
- Touche ESC pour sortir,
- Touche S pour changer le type de Rendu des Material des Quads,
- Touche T pour le test de la fonction de re-texturation,
- touche de directions pour déplacer la camera, qui est asservie à la hauteur de terrain.
c'est toujours ici: http://www.IrrDream.fr/_files/irrDreamTerrain0_1_1.zip
Je vais reprendre le code complet, pour mieux l'adapter, l'optimiser, inclure l'emploi possible de shader, et surtout faire un moteur de terrain complet,
sur lequel je travaille déjà, qui permettra entre-autre la gestion du broulliard, des nuages, lenz-flare, sky, water, etc... ainsi que la gestion par
octree + LOD(code encore perso) des éléments statics, comme tout ce qui est végétation, arbres, et autre objets comme des pierres, ruines, etc...
(plus de 100.000 meshs tout en gardant un très bon fps).
Un projet complet en fait qui se présentera sous la forme d'un petit SDK, avec doc, exemples, et code bien sûr.
Je ne manquerais pas de vous tenir au courant bien sûr..
Hors ligne
Mise à jour avec la version 0.1.2 du moteur de terrain. Outre la chasse aux bug, Les ajouts sont:
- gestion du picking,
- gestion des collision avec le terrain
- possibilité de terraforming dynamique.
Le dossier Bin contient les exe, pour ceux qui veulent juste voir à quoi cela ressemble.
Attention, pour l'exemple n°4, il faut une carte video supportant des textures de 4096x4096, sinon il
suffit de redimensionner l'image 'sol110.png' en conséquence (en 2048 voir en 1024).
c'est ici :
http://www.IrrDream.fr/_files/irrDreamTerrain0_1_2.zip
Je vais songer aussi à faire une petite doc, car le nombre de fonctions commence à être important, donc
cela va se révéler indispensable.
Hors ligne
arf , c'est magnifique tmyke
Bien mieux que le truc préintegré --' (2h et demi pour generer un terrain correct avec ma super heightmap personnalisé :p )
Ca fonctionne sous openGL ? :-°
Hors ligne
ramis :
Ca fonctionne sous openGL ? :-°
Oui bien sûr, je n'emploie que des fonctions liées à Irrlicht, donc tu peux choisir le driver que tu veux
Hors ligne
J'essais de te pondre cela d'ici à demain dans la journée.
Hors ligne
merci
très sympa !
Dernière modification par Magun (28-03-2009 21:30:58)
Hors ligne
Bon, comme promis, une petite réponse suite à ta question ci-dessus.
En fait, je suppose que tu veux connaitre les vertices du terrain pour permettre
de définir le maillage pour ton moteur physique.
En fait, voici comment tu peux arriver à ce résultat sans peine.
Comme tu l'as certainement constaté, le moteur de terrain construit en fait un
certains nombre de Quad (sorte de tile 3D en fait), qui sont affichés ou non
en fonction de leurs visibilités.
Ce sont ces quads qui contiennent les informations de géométrie.
Chaque Quad à en son sein un SMeshBufferLightMap. Ce membre de la classe CQuad est
public, donc accessible.
Pour avoir donc accès à la géométrie, il suffit d'écrire:
nquad->mbuffer->Vertices
nquad->mbuffer->Indices
Pour obtenir tous les quad définit sur un terrain, facile:
for(int i=0; i<terrain->numQuad; i++) CQuadNode *nquad = terrain->GetquadNode(i);
Voilà, en espérant que cela réponde à tes attentes.
Hors ligne
impeccable merci
j'avais bien pigé le système des quads, mais quand a leur utilisation, j'ai pas trop approfondie ... ( j'ai pas trop cherché a vrai dire )
bref je m'en vais tester cela
[EDIT] :
sa semble marche mise a par la min d'attente pour la récupération de la géométrie, mais il semble y avoir un bug de la physique ...
en debug pas de collision avec le terrain
et sinon l'objet disparais a la rencontre du terrain ... ( du moins le premier a rencontré une collision sur tell point )
Dernière modification par Magun (29-03-2009 17:52:36)
Hors ligne