#0 

05-01-2007 22:38:15

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut,
Alors comme certains ont pû le remarquer, Irrlicht limite la taille de ses terrains a une HeightMap de 256*256 maximum.
Etant moi même un amoureux de beaux landscapes, j'étais bien embeté par cette limite.
Je me suis donc demandé pourquoi une telle limite ? Et surtout qu'elle en était la cause ?
Mes premières remarques :
un terrain de 256*256 si on multipli ça fait du .... heu attendez voir .... 65536!! Roooo tiens ça me rappele un truc mais je sais plus quoi..... et puis soudain! Oui je sais, c'est une limite de dimension mais alors pourquoi sur d'autre moteur j'ai pas eu se genre de problème ?
Bein là j'ai cherché un petit moment avant de m'appercevoir qu'en fait le moteur d'irrlicht utilisait des Array de 16 bits et donc limité à 65535...Et oui pas évident de faire le raprochement quand on débute le C++.
Donc je me suis mis en quete des petits u16 qui trainaient autour du moteur de rendu de directx9 puis ensuite opengl,software,sofwtare2 (que du bonheur)....
Puis j'ai tranquillement attaqué la modif en commentant systématiquement la ligne modifié pour avoir la source originale en cas d'erreur et pouvoir revenir rapidement en arrière.
Donc après plusieurs petites heures de "conversion" et recherche, je vous propose d'essayer un terrain rendu avec le moteur de terrain d'irrlicht (sur lequel pour l'instant je n'ai rien modifié) et qui utilise une HeightMap de 512*512.
Et par la même occasion j'espère avoir vos éventuels retour de bugs smile.
Donc voici le liens pour le télécharger :
Telecharger ici

Voilou par avance merci pour les retour atelier et @ bientôt wink.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#1 

06-01-2007 10:46:31

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

En fait je viens de m'appercevoir se matin qu'il y a un gar sur le site officiel qui a fait la même chose .. Mais bon dans mon cas je sais maintenant comment c'est fait, et je sais surtout que ça a pas été fait à l'arrache ^^.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#2 

06-01-2007 11:02:14

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Bravo !

Très intéressante modif.. J'espère que l'irrlicht officiel et sa limite honteuse de 256² pour les heigtmaps saura évoluer en ce sens sad

Hors ligne


#3 

06-01-2007 11:27:57

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

j'ai testé sous windows (Centrino 1.7 ghz Ati X600 )

ca fonctionne partout : opengl, direct3d, et software, etc ..

par contre j'ai une erreur en console avec Direct3D 9.0, (mais le rendu se fait correctement)

Code:

Irrlicht Engine version 1.2
Microsoft Windows XP Personal Service Pack 2 (Build 2600)
Using renderer: Direct3D 9.0

ATI MOBILITY RADEON X600 SE ati2dvag.dll 6.14.10.6561
Could not load shader function D3DXAssembleShader from dll, shaders disabled: d3
dx9_31.dll
Could not create vertex shader.
Could not create vertex shader.
Could not create vertex shader.
Could not create vertex shader.
Could not create vertex shader.
Could not create vertex shader.
Loaded texture: media/irrlichtlogoalpha.tga
Generated terrain data (512x512) in 0.0000 seconds
Loaded texture: media/color.jpg
Loaded texture: media/detail.jpg
Loaded texture: media/irrlicht2_bk.jpg
Loaded texture: media/irrlicht2_ft.jpg
Loaded texture: media/irrlicht2_rt.jpg
Loaded texture: media/irrlicht2_lf.jpg
Loaded texture: media/irrlicht2_dn.jpg
Loaded texture: media/irrlicht2_up.jpg

ensuite, j'ai la vague impression que les altitudes sont mieux percues, mais il est tres possible que ce soit du a la qualité du rendu et l'utilisation des shaders

la camera se bloque souvent sur le terrain si on essaie de marcher dessus, mais il est probable que ce soit du a une ellipse du collision response animator trop petite

si tu as un binaire ou le code source, je testerai sous linux



petite question : la taille de la height map améliore elle le rendu graphique ? ou sert elle aussi au collision response animator ? ou uniquement au fonctionnement du programme qui se déroule derriere (poser des objets sur la map etc) ?

est ce que cette modification est susceptible d'accelerer le programme ? ou (plus logiquement) de le ralentir ? dans quels cas ?

Dernière modification par Jerry Kan (06-01-2007 11:35:04)

Hors ligne


#4 

06-01-2007 12:10:14

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Salut Jerry Kan

Tout d'abord pour le shader, c'est interne à Irrlicht et je l'ai compilé avec le dernier sdk de dx9 donc vérifi que t'a bien la dll d3dx9_31.dll dans C:\Windows\system32 auquel cas installe le dernier directx 9 smile.

Ensuite si la camera se bloque souvent, ce n'est pas dû à mes modifs je te rassure desuite, le problème existe également sur le sdk non modifié.C'est un bug des collisions dans le TriangleSelector je pense.

Pour linux je compilerai également une version afin que tu puisses tester aussi.

La taille de la heightmap permet surtout d'avoir un terrain plus grand et donc plus détaillé avec plus de collines etc...

Et pour finir, la modification n'est pas succesptible d'améliorer le programme, au contraire cela doit même alourdir la charge.
Mais c'est logique, un programme tournant avec des indices 16 bits prendra 2 fois moins de charge qu'un programme tournant en indices 32 bits.Mais théoriquement, cela ne devrait pas faire chuter le fps, ou si peut que cela en vaut vraiment la peine à mon avis.

Sinon je vais regarder plus pret du côté du moteur de terrain car je le trouve particulièrement lent.Si y'avait une optimisation à y faire ça pourrait être bien sympa aussi...
Voilou merci pour le retour et @+


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

06-01-2007 13:49:44

Aranoth
Abonné
Lieu: Toulouse
Date d'inscription: 25-09-2006
Messages: 242
Site web

Le rendu est vraiment magnifique !

Quel est le rôle du shader dans ce rendu ? En ce moment je m'intéresse vraiment à GLSL donc je suis curieux de voir ce que l'on peut réellement faire avec.

Hors ligne


#6 

06-01-2007 14:22:10

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Les textures sont pas de moi et il n'y a aucune utilisation de shader de ma par, probablement en interne irrlicht les utilises .....
Si tu trouves se land magnifique, bein tu vas pleurrer le jour ou je vais en sortir un vrai ^^.
Pour l'instant j'essai de voir les améliorations qu'il y aurrait moyen de faire au moteur de terrainn mais c'est pas gagné smile.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#7 

06-01-2007 14:47:40

Aranoth
Abonné
Lieu: Toulouse
Date d'inscription: 25-09-2006
Messages: 242
Site web

Je croyais que tu utilisais un shader car comme Jerry Kan j'ai le message "Could not create vertex shader." avec DX9. Mais c'est vrai que ma version de DX n'est pas à jour (je bosse exclusivement avec OpenGL)

Hors ligne


#8 

17-01-2007 14:15:32

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

Salut,

J'ai la même chose à développer pour mon projet en ce moment, à la différence que le terrain fait 100 000 x 10 000 big_smile
J'ai donc dû tout recoder et au final, ça affiche une profondeur de champ assez impressionante pour pas mal de FPS (je te l'avais montré Copland, il y a quelques temps).

Pourquoi je dis ça ? Pour dire que le Terrain scene Node est une relique à mes yeux, peut-être en recoderai-je un meilleur sur le wrapper (celui que j'ai fait ne colle qu'à mon projet en réalité), mais j'encourage ceux qui le peuvent à le faire.


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#9 

17-01-2007 18:19:16

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

tu optimises comment avec une taille pareille? octree? quadtree?


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#10 

18-01-2007 16:48:24

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

Déjà, tu t'imagine que je n'affiche pas tout en même temps, tout est séparé en petits terrains carrés, comme ceux d'Irrlicht (donc quadtree), je n'ai pas de screenshots sous la main mais la profondeur vaut environ 5*5 terrains (centrés sur la position de la caméra) donc les terrains affichés sont 1 + 2 + 3 + 4 = 10 terrains.
Ensuite, j'aurais pu faire comme Irrlicht une belle méthode de LOD généré au moment du rendu. Mais j'ai plutôt choisi d'utiliser plus de RAM et moins de CPU. Ainsi, je "prégénère" 10 MeshBuffers de LOD et j'en choisis un au rendu. Je n'ai plus les nombres sous la main mais c'était du genre max = 30K polygones, min = 128 polys. Le résultat à mes yeux était plus que bon, et le LOD lointain rajoute *presque* du réalisme -si si !- avec le brouillard. Si on reprend le calcul du début ça fait du genre 30K + 5K * 2 + 500 * 3 + 100 * 4 = 41 900 polygones pour un terrain complet. C'est beaucoup mais c'est pas si grand quand on sait qu'on peut faire varier beaucoup de paramètres selon la machine par exemple... et le rendu donne une profondeur de vision très grande -trop, ça devient irréaliste à la fin big_smile.

PS : Si vous voulez, je vous uploaderai une (vieille, crash du portable oblige) version de démonstration que j'avais faite.

Dernière modification par DeusXL (18-01-2007 16:51:38)


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#11 

18-01-2007 18:27:06

izguit
Administrateur
Lieu: 127.0.0.1
Date d'inscription: 14-09-2006
Messages: 306
Site web

T'entends quoi par ton "prégénère"?
En gros c'est du lod semi-précalculé ? smile


Athlon 64 3000+ // 1Go RAM // Geforce 6600GT 128Mo
Turion 64 X2 // 1Go RAM // ATI X1250

Hors ligne


#12 

19-01-2007 13:41:25

Ravine
Membre
Date d'inscription: 09-12-2006
Messages: 61

si j'ai bien compris l'explication de DeusXL, il se demerde pour generer le pack de mesh en fonction de la distance, pour pouvoir choisir au cas par cas lequel afficher. Effectivement ça requiert de stocker pas mal en RAM (je parle de façon purement théorique hein, intuitivement là comme ça) vu qu'il genere ça en amont de l'affichage, et qu'a priori, il ne fait que piocher dans ce buffer de mesh pour gerer son LOD.

C'est effectivement plutot bien vu  smile

Hors ligne


#13 

20-01-2007 10:48:11

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

=> Ravine, c'est exactement ça. Oui, la prise de RAM est largement plus grande, mais si tu vois, au final beaucoup de LOD ne font que 500 polys ou à peine plus alors ça prend pas tant que ça. Là où ça fait plus mal c'est à la génération qui prend plus longtemps.


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#14 

20-01-2007 13:17:02

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Je suis très très très (ça suffit ?) intéressé par ta proposition de démo DeusXL ! (et certainement pas le seul dans ce cas !)

Hors ligne


#15 

20-01-2007 13:53:53

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

Voilà j'ai uploadé une vieille vieille version sur http://deusxl.free.fr/Permasoft
Autant vous prévenir, j'avais amélioré le look largement depuis mais tout est sur mon disque dur de portable et j'attends de le récupérer.


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#16 

20-01-2007 15:06:27

Aranoth
Abonné
Lieu: Toulouse
Date d'inscription: 25-09-2006
Messages: 242
Site web

Est-ce un bug connu ?


En tout cas le terrain à l'air immense, et l'eau est magnifique. Beau travail !

Hors ligne


#17 

20-01-2007 15:24:31

Jerry Kan
Habitué
Date d'inscription: 21-11-2006
Messages: 265

super beau !

Hors ligne


#18 

20-01-2007 23:43:47

Copland
Modérateur
Lieu: ZarbiLand
Date d'inscription: 22-09-2006
Messages: 657
Site web

Ce n'est pas un bug, il utilise un systeme de terrain tile et avec le Lod il a des "cracks", c'est super connu comme problème ça.
La solution pour y remédier (je présume que ça a été fait) c'est de rajouter des vertexs entre et créer des faces, mais c'est très couteux en therme de FPS.
Y'a d'autres solutions comme celle qu'on appele les "jupes" mais je connais pas plus que ça le système.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#19 

21-01-2007 09:30:34

DeusXL
Abonné
Lieu: Paris
Date d'inscription: 27-09-2006
Messages: 174

Alors Copland a tout bon sauf que je dirais que pour la démo on a besoin de rien.
C'est juste une démo qui utilise un terrain (et qui ne correspond pas du tout) copié à l'infini. Le but était juste de montrer des terrains collés les uns aux autres à l'infini, j'étais parfaitement conscient de ce bug.

PS Copland : Pour remédier au problème des terrains qui ne collent pas, on peut faire plusieurs techniques qui n'ont pas d'effet sur le FPS. Par exemple, appliquer un filtre au moment où on lit l'image en la liant à sa voisine. Concrètement, ça voudrait dire dans cette image réduire la hauteur des derniers polys du terrain de gauche et augmenter celle du terrain de droite. De plus, en règle générale, quand le terrain est bien conçu on n'a même pas à appliquer quoi que ce soit, la jointure se fait d'elle-même.


Fanatique d'Irrlicht + Fanatique de Mono + Fanatique de Linux => Créateur d'Irrlicht .NET CP bien sûr !
Version actuelle d'Irrlicht .NET CP : 0.8, Version en test : 0.9.

Hors ligne


#20 

21-01-2007 22:09:58

kedu
Modérateur
Date d'inscription: 23-09-2006
Messages: 155

Je suis déçu que ma carte ne supporte pas les shaders car impossible d'apprécier le compte tenu de ta démo de terrain évolué !

(Le terrain est tout noir chez moi sad arggg)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
117 invités en ligne
Aucun membre connecté
RSS Feed