Faut arrêter la mauvaise foi un peu, autant DX10 n'a rien apporté au niveau visuel, autant oui la tesselation avec DX11 est une avancée significative.
Les premiers tests de perfs montrent que ce "lissage" est moins gourmand qu'un shader de parralax occlusion, alors non, les perfs ne seront pas pourries, et utilisé correctement, ce nouvel outil pourra avoir des avantages considérables, tant du point de vue du développeur que du joueur.
Faut avouer que Stalker n'est pas non plus un exemple à suivre en matière de modélisation et texturing alors forcément ça n'est pas très parlant ... Si les textures ne correspondent pas exactement au modèle high poly utilisé pour le displace de la tesselation, le résultat visuel ne sera optimal.
Et contrairement à la techno de 2003 qui "rendait tout rond" ici la tesselation est ensuite displacée suivant une heightmap, ce qui permet, encore une fois, si c'est bien utilisé, d'avoir un rendu équivalent à celui du modèle High poly utilisé pour générer la normal map.
Premières images DirectX11 de Stalker: Call of Pripyat
Les screenshots de la misère :/
Le plus triste c'est sans doute celui avec l'ombre de l'arbre: ils veulent nous montrer un léger displacement du terrain, alors que l'arbre au premier plan reste désespérément sans reliefs (cf contours de l'arbre).
Alors qu'on peut déjà faire du displacement bien plus précis avec DX9 sans perte de framerate....
Le plus triste c'est sans doute celui avec l'ombre de l'arbre: ils veulent nous montrer un léger displacement du terrain, alors que l'arbre au premier plan reste désespérément sans reliefs (cf contours de l'arbre).
Alors qu'on peut déjà faire du displacement bien plus précis avec DX9 sans perte de framerate....
Le screen de l'arbre c'est surtout pour voir la différence au niveau de l'ombre, avec une dispersion progressive de l'ombre en dx11 pas très flagrant mais assez visible si on regarde vers la base du tronc (qui a été coupé dans l'image de NF). Il n'y a aucune différence sur le sol.
Grosse question de néophyte, mais j'aimerais qu'on m'explique par A+B pourquoi DX10 et DX11 ne peuvent pas êtres appliqués à XP. Parce qu'a chaque fois que je tente d'y répondre par moi même, j'arrive à la conclusion du plan marketing de merde.
Sérieusement, ces API ne peuvent être passées sous XP à cause de contraintes système ?
Sérieusement, ces API ne peuvent être passées sous XP à cause de contraintes système ?
Les solutions que l'api propose pourrait être passée sur XP sans aucun problème, mais comme DX10/11 s'appuie aussi sur la nouvelle architecture des drivers proposé par vista et 7 ce serait un peu contre productif pour MS qui voudrait qui veut toujours imposer de nouveaux standard. Mais rien n'empêche les programmeurs d'implanter ces solutions eux même dans leur programme. C'est plus un problème de stratégie que de marketing.
Si les gens pensent que DX10 est sensé améliorer les performances, c'est pas qu'ils l'ont inventé, c'est parce qu'on leur a dit.
L'un des arguments de vente (et de promotion de DX10) c'est qu'il améliorait la gestion de X bidules et la rendait plus rapide, donc le jeu par la même occasion.
Le truc, c'est que les développeurs eux-mêmes ont tué cette idée : Crysis, le premier jeu utilisant l'API, avait rajouté des effets lorsqu'utilisé en DX10. Du coup, peut-être que si le jeu avait été le même il aurait été plus rapide en DX10, mais comme des effets avaient été rajoutés, il était plus lent.
Depuis, dans la tête des gens, DX10 = lent.
Suicide marketing.
L'un des arguments de vente (et de promotion de DX10) c'est qu'il améliorait la gestion de X bidules et la rendait plus rapide, donc le jeu par la même occasion.
Le truc, c'est que les développeurs eux-mêmes ont tué cette idée : Crysis, le premier jeu utilisant l'API, avait rajouté des effets lorsqu'utilisé en DX10. Du coup, peut-être que si le jeu avait été le même il aurait été plus rapide en DX10, mais comme des effets avaient été rajoutés, il était plus lent.
Depuis, dans la tête des gens, DX10 = lent.
Suicide marketing.
Et puis le gros soucis, c'est que DX10 est carrément sous exploité car pas rentable. Pourquoi se faire chier a perdre du temps à faire des trucs de malade sous DX10 quand la majorité n'a pas une machine adapté (y compris PS3/X360), ça vaut pas le coup d'investir. DX11 va se heurter au même probleme
Pourquoi dx10/dx11 ne peut pas être supporté sous XP.Orox a dit :
Sérieusement, ces API ne peuvent être passées sous XP à cause de contraintes système ?
La réponse est simple et complexe. Si tu ne veux pas rentrer dans les détails techniques il faut savoir que l'équipe qui travaille sur DirectX est d'une taille déterminée et qu'elle a suffisamment de boulot pour l'occuper (même si Microsoft est riche ils sont devenus et resté riches en faisant attention à leurs dépenses). De plus, Windows XP était un OS "mort" du point de vue de Microsoft pour les développements d'envergure déjà en 2006. Ils vont continuer à appliquer des patches pour la sécurité mais les nouvelles features qui impliquent l'architecture de l'OS ce sera niet. Microsoft ne cherche plus à vendre Windows XP sur les desktops/laptops, faut s'y faire.
Après pour la technique :
- le driver des cartes graphiques a été séparé en deux couches sous Vista/Seven, une en mode utilisateur et l'autre en mode noyau. La partie en mode noyau est fortement impliquée avec l'OS pour la gestion de la mémoire avancée, le scheduling, et plein d'autres choses. Cette partie a donc nécessité une modification (importante !) du noyau de l'OS. Et une modification importante également des drivers.
- Windows XP ne peut donc pas tirer partie directement de cette séparation sans le nouveau noyau. Qui dit nouveau noyau dit nouvel OS (Windows XP amélioré existe et il s'appelle.. Vista).
- Il est théoriquement envisageable de faire une couche d'émulation de DirectX 10 sous Windows XP si tu as accès au niveau matériel/driver. Après tout la surcouche OpenGL n'est pas contrôlée par Microsoft et fonctionne à la fois sous Vista, XP, Linux, MacOSX etc. MAIS ce faisant, 1- tu peux te mettre à dos Microsoft, 2- tu n'offriras pas exactement le même niveau de fonctionalité, peut-être qu'il y a des choses qui fonctionneront mieux probablement beaucoup qui fonctionneront moins bien. 3- cet effort doit être dupliqué pour chaque vendeur de hardware, ce qui mettrait cette couche pseudo-dx10 dans le même panier qu'OpenGL. 4- tu ne sais pas quand XP va devenir obsolète. Lors de la sortie de Vista, beaucoup pensaient que XP serait obsolète très rapidement, et donc lancer un développement de surcouche très couteux (et aussi couteux en terme de pertes d'opportunités) et avec des résultats pas garantis est dur à justifier. Il y a bien des tentatives amateures/externes, mais c'est soit des hoax soit des projets mal financés, mal conçus et sans le support nécessaire derrière.
Et bien entendu en 2009/2010 avec la sortie de windows seven/dx11, ce qui va vendre des nouveaux hardware, os, pcs ce ne sera pas Windows XP.
La dernière personne à laquelle il faut demander des détails sur DirectX c'est le marketing/pr de Microsoft.Mysterius a dit :
Si les gens pensent que DX10 est sensé améliorer les performances, c'est pas qu'ils l'ont inventé, c'est parce qu'on leur a dit.
La seule source valable, c'est la documentation technique, les white papers et présentations faites aux développeurs.
DirectX 10 améliore la performance :
- des small batches. Mais cela n'est toujours pas d'un intérêt flagrant, si 1- les développeurs ont été déformés par des années de matraquage sur la taille des batches (rendant l'intérêt très marginal) et 2- si tu es GPU limited dans la plupart des situations, situation 2 pouvant être une conséquence de situation 1. Et de plus la situation imaginée par Microsoft au tout début (small batches ayant un coût proche de celui des consoles) ne s'est pas réalisée.
- recompilation des shaders mais c'est plus un souci pour les développeurs, et fabricants que pour l'utilisateur final qui n'y voit que du feu (ou ne sait pas interpréter les symptomes).
- mise à jour des constantes. En théorie plus besoin de faire autant de mises à jour mais en pratique, voir plus bas.
- rendu dans plusieurs targets simultanées. Beaucoup plus flexible.
- conditional rendering, permet de sauter des étapes du rendu cachés mais pas forcément évident à mettre en place de manière efficace.
- des surfaces de rendu HDR de moindre précision (héritée des consoles Xbox360). Mais uniquement s'ils sont bien pris en charge au niveau hardware et au niveau des jeux (après tout les joueurs PC n'ont jamais eu de souci à utiliser FP16 et sont habitués à un haut niveau de rendu).
- shaders plus expressifs etc etc. Plein d'autres choses.
DirectX 10 diminue la performance :
- mise à jour des constantes. Oui c'est aussi un avantage mais comme on a changé de paradigme (immediate constant vs constant buffer) une utilisation optimale pour les immediate constants ne l'est plus pour les constant buffers.
- rendu dans plusieurs targets simultanées. Beaucoup plus flexible mais avec des potentiels de perdre de la perf si on ne fait pas attention.
- conformité IEEE, undefined behavior et autres. La spec d3d9 est beaucoup plus relaxe sur beaucoup de points que la spec d3d10. Donc il y a des optimisations hardwares qui sont possibles quand on tourne en mode d3d9 mais qui ne sont plus possibles si l'on veut respecter la spec d3d10 à 100%. Bien entendu, c'est un point qui est totalement invisible pour l'utilisateur final de jeux vidéo. Ça facilite leur développement par contre (mais il y a d'autres points prises de têtes apportés par d3d10).
Si tu programmes un jeu sous dx10 directement cela sera beaucoup plus dur de le porter sous dx9 sans perdre une partie des fonctionalités (manipulation des entiers, geometry shaders, conditional rendering, constant buffers très grands, shaders très expressifs, multisampling efficace etc).
Mais surtout Dx10 c'est le hardware dx10 qui fait beaucoup plus de choses qu'un hardware dx9 de première ou deuxième génération. Chargez un jeu récent dans votre radeon 9700pro et dites moi comment il tourne (s'il n'est pas empeché de tourner par le manque de certaines features) comparé à votre GTX2xx. C'est non seulement beaucoup plus rapide, mais en plus le hw dx10 supporte des choses (y compris en mode d3d9) que les anciennes cartes ne supportent pas.