Question sur les différentes perfs des moteurs 3D - Programmation
Marsh Posté le 12-11-2001 à 23:25:26
parce que chaque moteur n'utilise pas les mêmes méthodes tout bonnement ...
quake précalcule les surfaces visibles, donc c'est très rapide
unreal fait je sais pas quoi, ça rame (apparemment un buffer soft derrière)
pour le moteur de vampire, il faut placer les portals à la pogne sous l'éditeur
etc ...
ensuite, faut voir comment tout ça est rendu : à un moment, le codeur d'unreal avait posté son wrapper dx7 et c'était ... hum ... comment dire ... *MAL*. à chaque triangle, un appel de DrawPrimitive(TRIANGLE_FAN, ... 3 vertices). un triangle par appel. faut pas s'étonner donc (bon ça a dû changer, enfin j'espère )
Marsh Posté le 12-11-2001 à 23:59:32
ouh la la c'est tres complique!
D'abord les moteurs 3D sont differents
parce qu'ils n'affichent pas les memes
choses. Normal sinon ce serait les memes !
Tu vas dire pourtant ce sont toujours des
polygone que l'on affiche. D'accord mais
les polygones c'est juste la matière première.
Exemple: une pomme de terre peut couter
beaucoup plus chere suivant que tu la commandes
dans un MacDo ou dans un resto 3 etoiles
et pourtant c'est toujours une pomme de terre.
D'abord c'est vrai qu'un triangle n'a pas un cout
défini et constant. Meme si tu envoies un meme
nombre de triangles, la maniere dont tu les traites
va enormement faire varier la rapidite de traitement.
Techniquement par exemple, plus tu as de
sous-couches plus tu as un cout par triangle eleve
(si la technique de programmation est optimale).
Ainsi, il y a un certain nombre d'optimisations
qui sont accessibles a la personne qui travaille
en tres bas niveau et qui ne le sont plus
quand tu travailles en haut niveau. C'est le cout
d'abstraction, mais tu fais ca en general pour
y gagner soit en portabilite (librairie crossplatform)
soit en rapidite de developpement (librairie
haut niveau générique), soit tu confies
les optimisations a la librairie
mais qui ne connait pas forcement les details de ton jeu.
Parfois c'est parce que tu es un manchot ou
parce que tu manques de temps aussi et donc,
ton moteur ne traite pas les triangles aussi
rapidement qu'il le devrait. (exemple: non
utilisation des triangles strips)
Ensuite en dehors des couts bas niveaux, tu as
le choix d'optimisations que tu veux faire.
Tu ne vas pas optimiser ton moteur de la meme
facon, si tu ne veux afficher que des exterieurs,
que des interieurs ou les deux simultanement.
De meme si tu veux conserver des fichiers de donnees
de taille limitee ou si au contraire, ca ne derange
pas qu'ils soient tres gonflees de sorte que tu sois limite
a une petite zone sans chargements.
Exemple: les fichiers niveaux Quake 3 sont enormes,
il y a beaucoup plus de donnees que de simples donnees
géométriques (des decoupages en BSP, des PVS, des plans
de collisions, des lightmaps, etc..). Dans certains cas,
tu ne peux pas te permettre de precalculer des
lightmaps pour tout ton jeu tout simplement parce qu'ils
ne tiendraient pas en mémoire.
Donc la reponse a ta question est oui et non .
ca te parait bizarre mais ta question elle meme est
bizarre parce qu'il est parfois dur de comparer
des moteurs qui font des choses tres differentes.
A+
LEGREG
Marsh Posté le 13-11-2001 à 11:58:22
voui, note aussi que parfois certains triangle font plus mal que d'autre (genre 36 triangles qui me font perdre 40fps, ca m'a fait mal )
Ceci pour dire que comparer la vitesse / nb tri balancer veut pas trop dire grand chose (en particulier si tu compare moteur de paysage et moteur d'interieur, en paysage tu peux te permettre de regrouper tes poly par gros blos et envoyer tout ca a la carte, alors qu'en interieur fo jouer plus fin)
Marsh Posté le 12-11-2001 à 21:34:13
La dernière question que je me suis posé dans ma grande quête pour la connaissance de la théorie des moteurs 3D est la suivante:
pourquoi pour une scène donnée tous les moteurs 3D ne calculent pas tous à peu près aussi vite chaque image?
Je comprend que dans un moteur 3D l'optimisation des faces à calculer est pour beaucoup dans la perfomance du moteur, mais je ne comprends pas pourquoi pour un nombre donné de polygone chaque moteur met des temps différents à calculer la scène.