Archive pour 19.11.2009
Pour passer pour quelqu’un d’instruit et de cultivé…
19.11.2009 par Mitch.
…en société, ce lien
Posté dans Tech, Divers | Aucun commentaire »
Du manque de succès de DirectX10
19.11.2009 par Mitch.
Je suis tombé hier soir sur un forum où l’on causait allègrement de DirectX11. J’ai été frappé de voir le nombre de contre-vérité étalées comme du kiri sur du pain de mie, oui, vous savez, le kiri, y fait rien qu’à massacrer le pain de mie en dessous…Bref, voilà un rappel de faits :
- DirectX11 va poutrer, c’est sûr. On attends à mort le tessellation shader, qui permet de re-trianguler des objets à la volée, et donc de faire du LOD sans LOD. Ou mieux, si on y ajoute du displacement. Si la techno est mieux que celle déjà présentée par ATI avec ses premières cartes RadeOn, ça devrait être sympa, on n’en doute pas. Plus de parallélisation au niveau CPU, aussi, ce qui devrait permettre de mieux gérer les entités d’une scène (qui vont pouvoir être plus complexes) .Bien sûr, on parle aussi beaucoup de Direct Compute, une interface pour faire de GP-GPU, de la physique accélérée par le GPU, par exemple. Bon, si celui-ci à du temps devant lui. Et de la mémoire aussi. Difficile avec les ressources qu’occupent les applis temps-réel d’aujourd’hui. Enfin, grosse avancée, le shader linkage. Souvent, en DirectX, les devs utilisent un gros shader (un übershader) pour toute la scène qui doit prévoir toutes les fonctions d’affichage de tout les objets de la scène 3D, ce qui occasionne la création et la compilation d’un shader énorme, très complexe et très peu maintenable. Avec le shader linkage, différents petits shaders “simples” viennent se compiler dynamiquement en fonction du besoin. C’est juste une idée de génie. Le genre d’idées que l’on regrette de ne pas avoir eu plus tôt.
- DirectX10 est une très bonne API. Cela ne fait aucun doute. Bien meilleure que DirectX9. Pourquoi ne marche-t-elle pas? Pour de mauvaises raisons, en fait. parce que, je le répète, cette API tue. Elle est rapide, efficace. C’est plus de 100% de perfs en plus sur une scène donnée. Non, monsieur, ce n’est pas de la daube. Mais elle a eu en fait trois/quatre gros soucis:
1- Vista. Oui, le marketing Microsoft à tué DirectX10. Celui ci n’a jamais été porté pour Windows XP et Vista n’a jamais marché. Du coup, DX10 n’a jamais séduit les éditeurs de jeux vidéo, qui prenaient déjà de gros risques, à l’époque, en pariant sur les consoles NextGen.
2- Unmanaged. Alors que Microsoft évangélisait à mort sur le .Net et son architecture mangée, DirectX n’a pas été porté à temps sur la plateforme .Net, obligeant les devs potentiellement intéressés à coder un wrapper pour re-router les instructions. Ceci en grande partie à cause de la Xbox 360, d’ailleurs, qui est est en DX9 unmanaged. Grosse perte de temps et d’argent. en prévision, donc, hop, poubelle.
3 – Le marché. Au moment où sort Vista et DX10, aucune carte graphique n’est vraiment prête, et je vous raconte pas les drivers. Les constructeurs de hardware font des chiffres pitoyables, les ventes sont au fond du puits, et les acteurs du marché sont circonspects sur l’avenir de la nouvelle API. On sent bien qu’ils freinent des deux patins et peinent à fournir des drivers décents. Il faudra six mois aux constructeurs de matos pour arriver à fournir des pilotes, ce qui va entrainer la chute commerciale de Vista et de DX10.
Si on ajoute à cela la faiblesse de la plateforme Game for Windows (dénoncée par les éditeurs de jeux, qu’elle soit réelle ou non) , le (tout) petit buzz d’OpenGL3, tout le bruit de fond de boîtes de prod de jeu vidéo qui ne juraient plus que par la PS3 (avant de tourner casaque en voyant la tête de leur dev devant le SDK de Sony), le parc vieillissant de PC, l’étrange ratio prix/performances du SLI/ Crossfire grand public et surtout le fait que pour la première fois DirectX 10 ne soit plus rétro-compatible (Il est obligatoire de posséder une carte Full DirectX10 pour lancer une appli DX10, alors qu’avec DX9, une carte “compatible” suffisait), DirectX10 n’a pas connu le succès qu’il mérite.
Enfin, il faut l’avouer, DirectX 10 n’apporte pas un réel effet Waow. Il fait tout mieux, plus vite et plus gros (bien plus vite et bien plus gros) que ces prédécesseurs, mais n’ajoute pas la “killing function”. D’ailleurs, lors de la sortie de Crysis, nombre de joueurs ne voyaient pas beaucoup de différences entre la version haute de DX9 et la version DX10. D’ailleurs, une grande partie du code DX10 était accessible via un petit tweak du fichier de config (notamment les shaders longs, mais il fallait tout de même une carte Dx10 pour en bénéficier réellement sous XP). Mais je le répète encore, cette API est terrible.
DirectX11 va tuer et va marcher parce que la principale problématique est levée. Windows7 est d’ores et déjà un très bon OS qui va être populaire. Avec une pareille rampe de lancement, les éditeurs de jeux vont revenir (et oui, les consoles Next Gen vieillissent), les constructeurs sont prêts. DirectX10 aussi, puisqu’il est supporté par ce nouvel OS. De quoi ressortir Crysis? Oui, bien sûr, car, pour avoir terminer COD modern Warfare 2, qui est le représentant légal de ce qui se fait de mieux en terme de rendu Dx9, on se rend compte instinctivement de la différence de patate. Tout petits niveaux, très riches, mais petits, textures un peu petites, effets spéciaux un peu légers (particules). Si on ouvre Crysis, c’est du grand spectacle, encore aujourd’hui, 2 ans après sa sortie : Grands décors ouverts, grosse complexité de la scène, effets spéciaux hallucinants, shaders démentiels. Tout y est.
Posté dans Tech, 3D | Aucun commentaire »