Se connecter avec
S'enregistrer | Connectez-vous

Article sur Doom 3 : pas d'accord

Dernière réponse : dans Remarques et Suggestions

Je viens de lire l'article sur Doom 3 et je dois avouer que la conclusion me laisse perplexe.

Vous semblez oublier l'une des deux revolution apportées par DirectX 8 : les vertex shaders (enfin c'est surtout dans les cartes 3D la revolution hein)

Sans les vertex shaders, point de Doom3, evidement on peu tout faire en soft, ou pourrai même aller jusqu'a dire que Doom 3 est un jeu Dos car on pourrait tout coder en assembleur soft, sans utiliser la carte 3D mais cela ne rime pas a grand chose.

En pratique, Doom3 utilise massivement les vertex shaders (enfin leur equivalent openGL bien sur) pour l'extraction des volumes d'ombres, le skinning, le calcule des vecteurs d'éclairage et des vecteurs spéculaires.

De plus, en DirectX 7, on peux faire du bump mapping diffus sur des lumieres directionnelles car le vecteur lumiere est le même pour chaque vertex et peu donc être calculé au CPU avant d'envoyer les faces. Mais pour les lumieres omnidirectionnelles (point) et les calculs de spéculaire, les calculs doivent se faire au vertex -> Vertes shader -> DX8 :) 

De plus les pixels shaders simplifient grandement les calculs d'éclairage au pixel pour le bump mapping spéculaire.

Donc on peu dire que Doom 3 est AU MOINS du niveau de fonctionnalités DX8, et, a mon avis sur les cartes DX9 il utilise plus de 4 textures par passes, ce qui n'est possible qu'en DX9.

(et pour finir, a mon avis, sur les cartes PS2.0, il n'utilise plus les cube map car on peu enfin normer les vecteurs au pixel shader sur DX9)

Donc bon, bref, Doom 3 : DX9 :) 

Autres pages sur : article doom accord

Lassé par la pub ? Créez un compte

Citation :
Donc bon, bref, Doom 3 : DX9 :) 


Ca me fait un peu mal que t'arrives à cette mauvaise conclusion qui a justemment motivé la rédaction de cet article. :D 

Bon, l'auteur est en vacances, mais en gros les justifications que tu cherches sont dans l'article. Je me contenterais donc de le quoter. :) 

Principales techno utilisées dans Doom III :


les Shadow Volumes
(...)
Les fonctions matérielles nécessaires pour implémenter cet algorithme sont réduites : il suffit d'un stencil buffer (apparu sur certain chips Dx5 comme le Permedia 2 démocratisé sur l'ensemble des chips Dx6).

le Per Pixel Lighting
(...)
Les fonctions matérielles nécessaires pour implémenter cet algorithme se limitent au Dot3 texture blending (apparu sur certains chips Dx6 comme le Permedia 3 démocratisé sur l'ensemble des chips Dx7). Et au Cube Mapping (apparu avec les chips Dx7)...

code path
NV20 :
J'aimerais également éclaircir un point à ce sujet : les Pixels Shaders lancés à grands renforts de marketting sur la GF3 par Nvidia n'apportent rien à Doom III, techniquement les Pixels Shaders ne sont en fait qu'une version étendue des Registers Combiners apparus avec le NV10. Les chips NV2x permettent d'utiliser 4 textures par passe et 8 combiners au lieu de 2 textures et 2 combiners mais le principe reste le même (d'ailleurs l'extension OpenGL utilisée est identique). La grosse nouveauté offerte par les Pixels Shaders sur les Registers Combiners concerne l'adressage de texture qui peut désormais être contrôlé (au moyen d'une nouvelle extension GL_NV_texture_shader) permettant ce que l'on appelle des lectures de textures dépendants. Cette fonctionalité n'est absolument pas utilisée par Doom III, par conséquent le seul apport des NV2x à ce niveau concerne une diminution du nombre de passes.

Conclusion logique :
Donc au final quelle est la technologie utilisée par Doom III ? On peut d'ores et déjà dire la technologie qui n'est pas utilisée par Doom III : Doom III n'est pas un jeu OpenGL2, encore moins DirectX 9, comme j'ai pu le lire ici ou là. Fondamentalement si on regarde quelles sont les fonctionnalités nécessaires pour faire tourner Doom III on retient : le support d'un stencil buffer pour les ombres volumétriques, des opérations arithmétiques au niveau des pixels et le support du cube mapping pour tous les calculs d'interactions lumière / surface. Techniquement on peut dire que tout cela est présent dés OpenGL 1.3 / DirectX 7 ou, si l'on préfère se baser sur le hardware plutôt que sur les API, dès le NV10 (i.e la première GeForce). Et ce n'est pas étonnant car lorsque John Carmack a commencé ses travaux préliminaires sur son nouveau moteur dès le début de l'an 2000, c'était alors la meilleure carte disponible. Donc Doom III un jeu DirectX 7 (pour les puristes j'aurais du écrire : un jeu basé sur des fonctionnalités disponibles depuis DirectX 7) ? Je vous sens un peu déçu par cette conclusion mais c'est pourtant fondamentalement exact.


On en a aussi parlé lors de la sortie de UT2003. Beaucoup de monde disait 'Ouais, trop fort, DirectX 8.1 et tout, limite directX 9'. Je me permet de citer à ce propos un morceau de mon dossier GeForce FX : :o 

Citation :
(En parlant de UT2k3) Reste qu’en l’état actuel, ce moteur est essentiellement DirectX 7, utilisant le Transformation, Clipping and Lighting. Certains shaders de DirectX 8 semblent être utilisés si disponibles, mais leur importance est minime.


Le support de DirectX 8 de UT2k3 est une grosse blague. Le rendu visuel est quasi identique au rendu d'une carte DirectX 7, et si il y avait moyen de prendre une GeForce 4 TI et de virer toutes les fonctions DirectX 8, mais en gardant la puissance du truc, l'écart en perfs dépasserait pas 10 % avec le mode Dx8. :jap: 

Hihihi, merci, mais j'avais bien lu l'article :) 

Bon, alors je vais insiter sur 3 points :
- Shadow volume
- Bump mapping avec des point light
- Bump mapping spéculaires

Ces 3 techniques peuvent se faire avec DirectX 7, en jouant avec les texture stage (equivalent des register combiner), mais en TnL soft, c'est a dire en utilisant une GeForceFX comme une vulgaire TnT et en profitant uniquement du fillrate (et du dot3).

Certaines démo techniques DX7 te montreront un perso avec des shadow volume, tu en as même dans des jeux comme Q3, mais jamais cette technique n'a été utilisée dans un décor complet, pourquoi ? Car il n'y avait pas les vertex shaders. Il faut bien se rendre compte qu'une carte 3D traite des vertex infiniment plus rapidement qu'un CPU. Afficher un niveau de Doom 3 sans les vertex shader prendrait un temps monstrieux, et donc ma conclusion est que Doom 3(haute qualitée) n'est pas fesable sans les vertex shader.

Je bosse sur une appli 3D DX9, avec 250 000 faces/frames a 60 FPS a peu pres, avec sur chaque face un pixel shader 2.0 d'une 20aine d'instructions et un vertex shader d'une 30aine d'instructions. Si je passe en software vertex processing (ie, sans vertex shader mais tj les pixels shaders) je tombe a 4 FPS sur un athlon 2700+, on est très loin des 10% :) 

Par contre je te suis sur UT2k3, qui n'utilise pas d'effet necessitant l'utilisation de vertex shader, pour moi c'est Unreal avec plus de faces.

Donc voilà, je reste sur mes positions, pour moi doom3 n'est pas fesable en DX7 :) 

--
Ps : A titre d'info, et dans un tout autre sujet, sur mon appli, une GeForce FX 5600 est environ 6-7 fois moins rapide qu'une ATI 9600 Pro, les pixels shaders 2 elle aime pas du tout :) 

Bon, j'ai bien mon idée sur la manière de te répondre, mais j'aimerais pas mal interpréter ce que l'auteur a dit. Bref, attends qu'il rentre... :jap: 

Sinon, c'est quoi que tu réalises en DX9 ? :) 

PS : Ben ouais c bien la le prob des Geforce FX actuelles :/ 
Lassé par la pub ? Créez un compte
  • Contenus similaires :