DirectX 11 : calculs déviés vers les GPU et tesselation pour tous

Enfin... presque tous ! 99
DirectXL’histoire de DirectX est parsemée de versions dites « majeures » dans le sens où elles ont apporté d’un seul coup un ensemble de fonctionnalités importantes, en particulier sur l’API Direct3D. Ce fut le cas de la version 9, ainsi que de la dixième, complètement à part puisqu’elle faisait fi du passé. Avec DirectX 11, Microsoft travaille à contenter tout le monde.

Or, contenter tout le monde est l’une des choses les plus complexes qui soit. Non seulement les besoins peuvent être très différents, mais si chacun doit être bien nourri, on finit par faire des pates ou du riz pour tout le monde, et personne n’est réellement heureux. Mission difficile donc pour DirectX 11, qui devrait être là avec Windows 7 mais sera également disponible pour Vista, et qui présentera la particularité de reprendre la compatibilité avec DirectX 9, tout en gérant bien sûr les versions 10 et 10.1.

Cette reprise de DirectX 9 aura évidemment plusieurs répercussions. La plus importante sera pour les développeurs, car en créant une application ou un jeu pour Direct3D 11, l’API se chargera toute seule de vérifier quelle carte graphique est présente pour voir ce qui peut être calculé et ce qui ne peut pas l’être. Étant donnée cette compatibilité, il est toutefois possible que l’on observe une baisse de performances, mais cela sera à vérifier.

La tesselation : comme chez ATI, mais en plus vaste

Direct3D 11 présentera en outre le support de la tesselation, c’est-à-dire la possibilité de découper un ensemble géométrique en sous-divisions. La granularité est ainsi augmentée, et le résultat apparaît graphiquement comme plus fin, une technique qui donne ses meilleurs résultats dans les scènes complexes comme les extérieurs dans un jeu vidéo. La tesselation est déjà présente, comme le précise Hardware.fr, dans les Radeon HD, mais celle de Direct3D 11 ira plus loin. Cela étant, le travail effectué pour profiter de la tesselation avec les Radeon HD ne sera pas perdu, même s’il devra être adapté.

Compute Shaders : déporter les calculs vers le GPU

Beaucoup plus important cependant, DirectX 11 introduira des shaders particuliers appelés Compute Shaders. On quitte le domaine de la 3D pour entrer dans celui des calculs généraux. Toute personne qui s’est intéressée au langage CUDA de NVIDIA ou à la technologie OpenCL d’Apple connaît le principe : il faut faire calculer par le ou les GPU des opérations qui devraient d’ordinaire être entreprises par le ou les CPU.

Avec DirectX 7 et l’arrivée du Transform & Lighting, on avait assisté au début d’une translation des calculs d’ordinaire rattachés au CPU basculé par un GPU qui grossissait à vue d’œil en puissance de calcul. Non seulement le résultat était donné beaucoup plus rapidement, mais il était également bien plus sympathique à l’œil.

DirectX 11 présente la continuité de cette évolution en essayant de généraliser au maximum les opérations. Un développeur utilisant l’API de Microsoft pourra donc déclarer que son application fera faire certains calculs au GPU présent dans la machine. Bien entendu, il est nécessaire de demander spécifiquement à ce que ces opérations soient exécutées de cette manière. Il n’y a pas d’automatisme : le système ne va pas décider de lui-même qu’une opération part vers le GPU, et une autre vers le CPU.

Il faudra par contre certainement de vraies cartes graphiques destinées à DirectX 11 pour profiter des Compute Shaders, à moins que Microsoft trouve un petit tour de passe-passe pour contourner le problème mais… autant ne pas compter trop dessus. Il sera par ailleurs très intéressant de voir ce que NVIDIA fera avec CUDA face à DirectX 11 et à tout le poids qu'est capable de mettre Microsoft derrière une technologie, surtout quand celle-ci est déjà très implantée sur le marché. 
Publiée le 28/10/2008 à 17:10 - Source : Hardware.fr
Publicité