{"id":58023,"date":"2007-09-12T13:52:21","date_gmt":"2007-09-12T11:52:21","guid":{"rendered":"https:\/\/cms.galaxiemedia.fr\/tomshardware\/2007\/09\/12\/id-tech-5-le-nouveau-moteur-3d-de-carmack\/"},"modified":"2023-06-22T19:16:14","modified_gmt":"2023-06-22T17:16:14","slug":"id-tech-5-le-nouveau-moteur-3d-de-carmack","status":"publish","type":"post","link":"https:\/\/www.tomshardware.fr\/id-tech-5-le-nouveau-moteur-3d-de-carmack\/","title":{"rendered":"ID Tech 5 : le nouveau moteur 3D de Carmack"},"content":{"rendered":"
\n<\/span><\/span>C\u2019est en plein mois d\u2019ao\u00fbt lors de la d\u00e9sormais traditionnelle QuakeCon que John Carmack a pr\u00e9sent\u00e9 le prochain projet d\u2019id Software : Rage. Si peu de choses sont connues sur le jeu qui semble particuli\u00e8rement peu avanc\u00e9 dans son d\u00e9veloppement, le directeur technique d\u2019id Software a profit\u00e9 de sa pr\u00e9sentation pour donner quelques d\u00e9tails sur le moteur 3D qui animera le jeu. Finis les Doom et autres Quake engines<\/i>, le nouveau moteur s\u2019appelle id Tech 5 et la firme texane a au passage rebaptis\u00e9 tous ses pr\u00e9c\u00e9dents moteurs selon cette nomenclature : id Tech 2 pour le moteur de Quake 2, id Tech 3 pour le moteur de Quake III et enfin id Tech 4 pour le moteur de Doom III (et ses mises \u00e0 jour, notamment celle utilis\u00e9e par Quake Wars).<\/p>\n Maintenant que nous avons eu un peu de temps pour assimiler toutes les informations r\u00e9v\u00e9l\u00e9es lors de cette QuakeCon nous avons pens\u00e9 qu\u2019un petit bilan de toute la technologie qui se cache derri\u00e8re id Tech 5 ne serait pas superflu.<\/p>\n \nAvant de nous pencher sur la technologie r\u00e9servons quand m\u00eame ce paragraphe \u00e0 la pr\u00e9sentation du premier jeu sens\u00e9 l\u2019illustrer : Rage. Rage a la lourde t\u00e2che d\u2019\u00eatre la premi\u00e8re nouvelle licence venant d\u2019id Software depuis plus de dix ans, \u00e9poque \u00e0 laquelle Quake est sorti. Et le moins que l\u2019on puisse dire c\u2019est que ce fut douloureux pour la firme texane. En effet, on sait d\u00e9j\u00e0 qu\u2019apr\u00e8s Quake III id Software a pendant un moment travaill\u00e9 sur un nouveau jeu baptis\u00e9 Quest avant que le projet ne soit abandonn\u00e9, la firme (enfin essentiellement John Carmack) pr\u00e9f\u00e9rant se consacrer \u00e0 Doom III.<\/p>\n <\/span><\/span><\/p>\n Et l\u2019histoire se r\u00e9p\u00e8te : en 2004 Doom III vient tout juste de sortir, Carmack commence \u00e0 travailler sur la technologie de son prochain moteur pendant que le reste de l\u2019\u00e9quipe est occup\u00e9 par le portage Xbox. Le jeu bas\u00e9 sur cette technologie est alors appel\u00e9 Darkness, pendant un an id Software travaille sur ce projet avant de d\u00e9cider dans un \u00e9clair de lucidit\u00e9 qu\u2019un nouveau FPS se passant encore dans des couloirs sombres \u00e9tait peut \u00eatre un peu redondant. La firme entre alors dans une phase de brainstorming au cours de laquelle plusieurs id\u00e9es sont lanc\u00e9es et notamment celle de pouvoir utiliser des v\u00e9hicules pour se d\u00e9placer dans des paysages post apocalyptiques immenses. Rage \u00e9tait n\u00e9.<\/p>\n <\/span><\/span><\/p>\n Pas de panique toutefois, id Software n\u2019abandonne pas compl\u00e8tement sa formule classique, on retrouve donc des passages avec des flingues et une vue \u00e0 la premi\u00e8re personne. Le jeu prend peu \u00e0 peu forme autour d\u2019un univers ouvert dans lequel vous pourrez accomplir des missions comme bon vous semble, au milieu desquelles se d\u00e9roulent des courses de buggys. L\u2019argent que vous gagnerez dans ces courses pourra \u00eatre r\u00e9investi dans des boutiques pour acheter des armes ou am\u00e9liorer votre v\u00e9hicule.<\/p>\n Inutile de s\u2019attarder plus longuement sur le jeu vu ce qu\u2019id Software a r\u00e9v\u00e9l\u00e9 jusqu\u2019ici, si vous souhaitez vous faire votre propre id\u00e9e n\u2019h\u00e9sitez pas \u00e0 vous rendre chez nos coll\u00e8gues de JeuxVideoPC.com pour t\u00e9l\u00e9charger la vid\u00e9o du trailer si ce n\u2019est d\u00e9j\u00e0 fait.<\/p>\n \n<\/a><\/span><\/span>Int\u00e9ressons nous maintenant au tout dernier moteur de John Carmack, mais pour commencer en douceur avant de parler de MegaTexture, virtualisation, shaders et autres Shadow Maps, attardons nous quelques instants sur le nom de ce moteur\u00a0: id Tech 5. En effet il marque un changement de politique chez id Software peut \u00eatre plus profond que ce que l\u2019on peut penser au premier abord. Jusqu\u2019ici tous les moteurs maisons de la firme texane \u00e9taient baptis\u00e9s en fonction du premier jeu \u00e0 les avoir utilis\u00e9. Pourquoi donc ne pas avoir baptis\u00e9 ce moteur Rage Engine\u00a0? Parce que cela posait plusieurs probl\u00e8mes. Tout d\u2019abord RAGE est le nom du moteur de Rockstar (Rockstar Advanced Game Engine), et comme si cette raison n\u2019\u00e9tait d\u00e9j\u00e0 pas assez r\u00e9dhibitoire il faut aussi ajouter que ce n\u2019\u00e9tait sans doute pas judicieux d\u2019un point de vue marketing.<\/p>\n\n\n\n\n\n <\/p>\n\n En effet appeler des moteurs Doom III ou Quake III Engine ne posait aucun souci vu la c\u00e9l\u00e9brit\u00e9 de ces licences et le fait qu\u2019elles \u00e9taient intimement li\u00e9es \u00e0 id Software. Mais Rage comme nous l\u2019avons vu peut faire r\u00e9f\u00e9rence \u00e0 beaucoup de soci\u00e9t\u00e9s dans le monde du jeu vid\u00e9o\u00a0: on a d\u00e9j\u00e0 cit\u00e9 l\u2019exemple de Rockstar mais il y a aussi une ancienne soci\u00e9t\u00e9 appel\u00e9e Rage Software c\u00e9l\u00e8bre pour ses benchmarks jeux Incoming ou Expandable.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n Rage Engine \u00e9tant donc hors de question comment appeler ce moteur\u00a0? Le choix s\u2019est donc port\u00e9 sur id Tech 5 qui a le m\u00e9rite d\u2019\u00eatre clair\u00a0: il s\u2019agit de la cinqui\u00e8me g\u00e9n\u00e9ration de la technologie d\u2019id. Cette num\u00e9rotation rend aussi les choses plus explicites pour les futurs acheteurs potentiels\u00a0: il est d\u00e9sormais \u00e9vident de d\u00e9terminer la derni\u00e8re version des moteurs id Software, comme chez leur concurrent direct Epic.<\/p>\n \n<\/a><\/span><\/span>Puisque nous \u00e9voquons le sujet, parlons justement d\u2019Epic dont la mont\u00e9e en puissance de ces derni\u00e8res ann\u00e9es a semble-t-il influenc\u00e9 id. Il faut dire que Tim Sweeney et sa bande ont parfaitement su g\u00e9rer les choses, ils sont arriv\u00e9s exactement au bon moment, juste avant la nouvelle g\u00e9n\u00e9ration de consoles, avec la bonne technologie (orient\u00e9e Shader Model 3.0) et surtout le bon discours. En effet en 2004 lorsqu\u2019Epic fait sa premi\u00e8re d\u00e9monstration tous les \u00e9diteurs ont les yeux riv\u00e9s sur les Xbox 360 et PS3 dont l\u2019arriv\u00e9e approche et effraie aussi. On ne parle que d\u2019une explosion du budget des jeux et d\u2019une complexit\u00e9 de programmation accrue \u00e0 cause des architectures multi-cores.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span>Et voila que d\u00e9boule Epic avec un moteur qui semble r\u00e9soudre d\u2019un coup de baguette magique tous ces probl\u00e8mes. Et ils n\u2019\u00e9conomisent pas leurs efforts\u00a0: en 2005 ils sont partout, pour pr\u00e9senter Gears of War sur Xbox 360 ou encore faire une d\u00e9monstration d\u2019Unreal Tournament sur PS3 qui tourne d\u00e9j\u00e0 \u00e9tonnamment bien en exploitant pourtant uniquement le PPU. En face de \u00e7a id Software ne peut pas lutter\u00a0: le moteur de Doom III qui vient de sortir ne conna\u00eet pas le m\u00eame succ\u00e8s. Arriv\u00e9 entre deux g\u00e9n\u00e9rations il est trop lourd pour la Xbox et pas adapt\u00e9 aux nouvelles consoles vu qu\u2019il n\u2019est pas thread\u00e9 et utilise peu les shaders. De plus ses outils semblent archa\u00efques compar\u00e9s \u00e0 ceux de l\u2019Unreal Engine.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n L\u2019Unreal Engine conna\u00eet donc un engouement sans pr\u00e9c\u00e9dent et en l\u2019absence de concurrence digne de ce nom s\u2019impose comme LE standard de fait aupr\u00e8s de la plupart des \u00e9diteurs, m\u00eames les plus improbables comme Sega, EA (pourtant propri\u00e9taire de Criterion et de ce fait du moteur Renderware) et m\u00eame Square Enix\u00a0! La plupart des studios vont cependant vite redescendre sur terre\u00a0: le moteur est loin d\u2019\u00eatre aussi magique que Mark Rein ou Tim Sweeney le laissaient entendre. En particulier malgr\u00e9 les efforts du marketing pour vanter ses capacit\u00e9s multi-plateformes, l\u2019Unreal Engine 3 est avant tout un moteur qui a \u00e9t\u00e9 con\u00e7u avec le PC \u00e0 l\u2019esprit et le passage sur console n\u2019est pas aussi ais\u00e9 que pr\u00e9vu. Ainsi Epic tarde \u00e0 fournir le renderer multithread\u00e9, Gemini, indispensable pour tirer profit des derni\u00e8res consoles et de leurs processeurs multi-cores.<\/p>\n\n\n\n\n\n <\/p>\n\n De plus malgr\u00e9 la d\u00e9monstration encourageante en 2005 le moteur a des probl\u00e8mes \u00e0 \u00eatre adapt\u00e9 \u00e0 la PS3 et \u00e0 son architecture particuli\u00e8re. La plupart des studios multi-plateformes sont donc contraints de repousser la version PS3 de leurs jeux. Face \u00e0 cette situation Sony est m\u00eame contraint de d\u00e9p\u00eacher une \u00e9quipe dans les locaux d\u2019Epic afin de les aider \u00e0 exploiter au mieux le Cell. Enfin derni\u00e8rement la firme a b\u00e9n\u00e9fici\u00e9 d\u2019une publicit\u00e9 dont elle se serait bien pass\u00e9e\u00a0: d\u00e9\u00e7u par le moteur et consid\u00e9rant que les promesses initiales n\u2019avaient pas \u00e9t\u00e9 respect\u00e9es, Silicon Knight s\u2019est engag\u00e9 dans une proc\u00e9dure judiciaire contre Epic.<\/p>\n \nPendant ce temps id Software travaillait en silence. Conscients des carences du moteur de Doom III mais aussi des limites de l\u2019Unreal Engine 3, ils ont con\u00e7us id Tech 5 autour de plusieurs points essentiels. Le premier concerne la portabilit\u00e9. A l\u2019inverse des moteurs pr\u00e9c\u00e9dents d\u2019id Software ou d\u2019Epic, id Tech 5 a \u00e9t\u00e9 con\u00e7u d\u00e9s l\u2019origine pour tourner sur PC\/Mac mais aussi sur la PS3 ou la Xbox 360. Les GPU de ces deux consoles rendant les choses plus ais\u00e9es puisqu\u2019il s\u2019agit essentiellement de d\u00e9riv\u00e9s d\u2019architectures PC. L\u2019objectif \u00e9tait donc de pouvoir faire tourner le jeu d\u00e8s les premiers pas du d\u00e9veloppement sur l\u2019ensemble des plateformes, pas question de finir la version PC et ensuite de devoir tout reprendre pour essayer d\u2019adapter \u00e7a aux consoles de derni\u00e8re g\u00e9n\u00e9ration. Pour parvenir \u00e0 un tel r\u00e9sultat id Software s\u2019est donn\u00e9 les moyens en embauchant notamment Jon Olick, un ancien de chez Naughty Dog. Sp\u00e9cialiste du Cell, Olick a en particulier travaill\u00e9 sur un ensemble de biblioth\u00e8ques destin\u00e9es \u00e0 faciliter le d\u00e9veloppement PS3 et regroup\u00e9 sous le nom de Edge Toolkit.<\/p>\n <\/span><\/span><\/p>\n Le deuxi\u00e8me point primordial qui a influenc\u00e9 le design concerne le frame rate : id Tech 5 est con\u00e7u pour pouvoir assurer un frame rate de 60 images par seconde sur toutes les plates-formes alors que jusqu\u2019ici id Software visait plut\u00f4t les PC tr\u00e8s haut de gamme et un frame rate de 30 i\/s. Autant dire que le challenge est ambitieux. Evidemment rien ne force un jeu bas\u00e9 sur id Tech 5 \u00e0 tourner \u00e0 60 i\/s, mais il est ind\u00e9niable que ce choix a eu des cons\u00e9quences sur l\u2019architecture du moteur.<\/p>\n <\/span><\/span><\/p>\n Le dernier point, sans doute celui qui a fait le plus parler de lui, concerne donc la fameuse technologie de MegaTexture d\u00e9j\u00e0 entraper\u00e7ue dans Enemy Territory : Quake Wars. Derri\u00e8re ce nom se cache en fait plusieurs technologies : tout d\u2019abord deux textures (une texture de base, une normal map) d\u2019une taille de 32 768 x 32 768, largement au-del\u00e0 des capacit\u00e9s du hardware (8 192 x 8 192 pour les cartes compatibles Direct3D 10). Ensuite un ensemble de techniques de compression est utilis\u00e9 afin de prendre ces deux textures de 4 Go chacune, de les combiner en un fichier de 5 Go puis de le compresser en un fichier d\u2019environ 500 Mo. Tout cela est bien joli mais m\u00eame avec les cartes modernes il est impossible de charger une telle quantit\u00e9 de donn\u00e9es en VRAM et quand bien m\u00eame ce serait le cas, le GPU ne saurait quoi en faire. Pour g\u00e9rer cette texture, un ensemble d\u2019algorithmes d\u00e9compose donc l\u2019image initiale en tiles<\/i> de 128 x 128 texels et les charges sur la carte \u00e0 la vol\u00e9e, uniquement lorsqu\u2019elles sont n\u00e9cessaires. R\u00e9sultat : un terrain textur\u00e9 de fa\u00e7on unique, sans motif r\u00e9p\u00e9titif ni jointures disgracieuses venant briser l\u2019illusion et une consommation de VRAM r\u00e9duite.<\/p>\n \nLe probl\u00e8me de cette premi\u00e8re version de la technologie est qu\u2019elle ne pouvait s\u2019appliquer qu\u2019aux terrains, ou plus pr\u00e9cis\u00e9ment \u00e0 toute g\u00e9om\u00e9trie pouvant \u00eatre assimil\u00e9e \u00e0 un plan d\u00e9form\u00e9. Avec id Tech 5 John Carmack a pouss\u00e9 plus loin le concept afin de pouvoir l\u2019utiliser sur des g\u00e9om\u00e9tries arbitraires. Mais concr\u00e8tement comment \u00e7a marche\u00a0? Le concept est finalement proche de celui utilis\u00e9 par la gestion de la RAM sur les CPU\u00a0: une application et ses donn\u00e9es ne sont pas charg\u00e9es en RAM comme un seul bloc, en r\u00e9alit\u00e9 tout est d\u00e9compos\u00e9 en pages de quelques kilo octets et seules les donn\u00e9es n\u00e9cessaires \u00e0 un instant T sont pr\u00e9sentes en RAM, les autres restent sur le disque dur.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n Pour g\u00e9rer tout cela un m\u00e9canisme de traduction d\u2019adresses se charge de donner l\u2019illusion \u00e0 l\u2019application qu\u2019elle dispose d\u2019une zone m\u00e9moire contigu\u00eb dans laquelle toutes les donn\u00e9es sont disponibles alors qu\u2019en pratique les pages sont \u00e9parpill\u00e9es partout en m\u00e9moire et sur le disque\u00a0: c\u2019est le concept de m\u00e9moire virtuelle, le CPU ne manipule que des adresses virtuelles qui sont ensuite traduites en adresse physique par une unit\u00e9 d\u00e9di\u00e9e (la MMU\u00a0: Memory Management Unit). Si la page est pr\u00e9sente en m\u00e9moire l\u2019adresse virtuelle est remplac\u00e9e par la v\u00e9ritable adresse dans la RAM, sinon la page est charg\u00e9e en m\u00e9moire depuis le disque dur (on parle de d\u00e9faut de page). Cette technique permet plusieurs choses\u00a0: tout d\u2019abord un m\u00e9canisme de protection (la MMU qui se charge de la traduction d\u2019adresse ne laisse pas \u00e0 un processus l\u2019acc\u00e8s \u00e0 une page m\u00e9moire qui ne lui appartient pas) et surtout un m\u00e9canisme permettant d\u2019utiliser des applications n\u00e9cessitant plus de m\u00e9moire qu\u2019il n\u2019y en a physiquement dans l\u2019ordinateur.<\/p>\n\n\n\n\n\n <\/p>\n\n Ainsi sur un syst\u00e8me 32 bits, chaque processus dispose de son propre espace d\u2019adressage de 4 Go (en g\u00e9n\u00e9ral sous Windows 2 Go sont r\u00e9serv\u00e9s au noyau, le processus ne peut donc utiliser que 2 Go) et tant que sa consommation m\u00e9moire reste dans la limite de cette taille il n\u2019y a pas de probl\u00e8me, m\u00eame si l\u2019ordinateur dispose d\u2019une quantit\u00e9 de m\u00e9moire physique nettement plus faible. Il convient de noter qu\u2019aujourd\u2019hui la quantit\u00e9 de m\u00e9moire physique flirte dangereusement avec les limites de l\u2019adressage 32 bits acc\u00e9l\u00e9rant le besoin d\u2019une transition vers un adressage 64 bits.<\/p>\n\n\n\n\n\n <\/p>\n\n <\/a><\/span><\/span><\/span><\/span><\/p>\n\n\n\n\n\n <\/p>\n\n Revenons \u00e0 id Tech 5. Le probl\u00e8me consistant \u00e0 placer une texture de plusieurs Go dans une m\u00e9moire de quelques centaines de Mo au mieux ne vous rappelle-t-il pas celui que nous venons de d\u00e9crire\u00a0? Et bien la solution est exactement la m\u00eame\u00a0: dans les faits cette immense texture n\u2019a jamais besoin d\u2019\u00eatre pr\u00e9sente en m\u00e9moire dans son int\u00e9gralit\u00e9, par cons\u00e9quent les textures comme nous l\u2019avons vues sont d\u00e9coup\u00e9es en tiles<\/i> et ceux-ci sont charg\u00e9s en VRAM uniquement selon les besoins, la RAM principale agit comme une zone de stockage interm\u00e9diaire, une sorte de m\u00e9moire cache venant tirer parti des principes de localit\u00e9 spatiale et temporelle. En effet lorsque le moteur demande une portion de la MegaTexture pour un frame donn\u00e9 il y a de fortes chances que pour le frame suivant il ait besoin d\u2019une portion proche. Ainsi lorsqu\u2019une partie est ramen\u00e9e depuis le disque dur puis d\u00e9compress\u00e9e, autant en prendre un peu plus que n\u00e9cessaire afin d\u2019acc\u00e9l\u00e9rer les acc\u00e8s suivants.<\/p>\n\n\n\n\n\n <\/p>\n\n Dans la th\u00e9orie c\u2019est tr\u00e8s beau, dans la pratique toute la difficult\u00e9 consiste \u00e0 d\u00e9terminer quelles pages sont n\u00e9cessaires pour un frame donn\u00e9, et ensuite \u00e0 programmer un shader permettant de texturer la g\u00e9om\u00e9trie avec toutes ses petites pages \u00e9parpill\u00e9es en VRAM.\u00a0Un des probl\u00e8mes se posant concerne notamment le filtrage\u00a0: que se passe-t-il par exemple aux bords des pages\u00a0? Si les pages sont charg\u00e9es sous la forme d\u2019un atlas de textures (plusieurs petites textures compact\u00e9es dans une grosse texture pour plus d\u2019efficacit\u00e9) l\u2019unit\u00e9 de texture du GPU utilisera des texels d\u2019une texture qui n\u2019a rien \u00e0 voir lors du filtrage, ce n\u2019est donc pas utilisable tel quel.<\/p>\n\n\n\n\n\n <\/p>\n\nRage, le jeu<\/h2>\n
id Tech 5, la technologie<\/h2>\n
La concurrence<\/h2>\n
Des objectifs ambitieux<\/h2>\n
La virtualisation de textures<\/h2>\n