Publicité
Derniers dossiers Cartes graphiques
Graphismes : les jeux VS la réalité

Graphismes : les jeux VS la réalité
Les constructeurs de cartes graphiques parlent souvent d'effets 3D dans les jeux dignes du cinéma. Mais quelle évolution a-t-on observée dans les jeux ces 10 dernières années, et quel chemin reste encore à parcourir avant d'arriver au photoréalisme ? Lire la suite

ID Tech 5 : Carmack change de cap sur Presence PC

Mercredi 12 septembre 2007 à 12:31 par Florian Charpentier, 2007-11-08
Source: Presence PC – Catégorie : Cartes graphiques
17 commentaires

ID Tech 5Comme souvent, la dernière QuakeCon a été l’occasion pour John Carmack de présenter son nouveau moteur 3D, id Tech 5, qui animera notamment une nouvelle licence, Rage. L’occasion pour nous de revenir sur le virage important ainsi opéré par le studio mythique id Software, et de vous expliquer en détails les technologies phares de ce moteur, comme le fameux MegaTexture.


Réagissez ! Retour à la liste des news
Publicité
Commentaires
okey-dokey 12/09/2007 14:54
Masquer
-0+
okey-dokey

Excellent article. Dommage que le Cry Engine 2 soit à peine mentionné à la fin, alors que techniquement il n'a clairement pas à rougir face au Unreal Engine 3... sans tout le batage marketing qui est fait à coté de ce dernier.

Pour ma part je suis content de voir J. Carmack revenir dans la course. J'ai toujours admiré son talent (et je suis grand fan de Quake devant l'eternel!) mais j'etais déçu par son travail sur DoomIII.

ZeJeff 12/09/2007 16:09
Masquer
-0+
ZeJeff

Concernant la partie numero 7 (suppositions sur l'algo)... C'est vraiment totalement farfelu...

Deja ... Faire un rendu de la scene dans une texture 1000x1000 est vraiment loin d'etre gratuit !! Surtout si la scene en question est chargée en vertices, si y'a beaucoup d'animations en vertex shader, etc... Ca irait sur une petite demo, mais sur un vrai jeu bien chargé, ca coute (relativement) cher ! Rajoutons à ça qu'il faut dans bien des cas utiliser la texture elle meme pour faire ce rendu (dans le cas d'un alpha test)... Les jeux modernes font deja beaucoup de rendus (ZPass, Shadow maps, Rendu final, etc...), inutile d'en rajouter encore un...

Recuperer la texture sur le CPU ensuite, c'est encore pire... Il faut plusieurs trames de decalages pour ne pas bloquer le CPU... Pas tres pratique... Obligé d'utiliser des double ou triple buffers, etc...

Quant à parcourir et traiter le résultat (4Mo pour une render target en 32bits., vu que les RTs 8 ou 16bits ça ne cours plus vraiment les rues) sur le CPU.. Ca ne serait qu'un gros gaspillage de temps CPU (Sans parler de la memoire cache) !

(Et puis recuperer l'information de la page de texture ne suffit pas.. il faut aussi connaitre le niveau de mipmap à utiliser, et certainement d'autres paramètres..)

Y'a quand meme 1000 fois plus rapide et beaucoup beaucoup plus simple pour faire tout ça, et sans embeter le GPU qui a certainement des choses bien plus interessantes à faire ! ;)


Zeross 12/09/2007 17:03
Masquer
-0+
Zeross

a écrit :

Concernant la partie numero 7 (suppositions sur l'algo)... C'est vraiment totalement farfelu...




Cette partie est pourtant basé sur un algo existant (cf lien dans l'article) farfelu peut être mais fonctionnel en tout cas ;)

Citation :Deja ... Faire un rendu de la scene dans une texture 1000x1000 est vraiment loin d'etre gratuit !! Surtout si la scene en question est chargée en vertices, si y'a beaucoup d'animations en vertex shader, etc... Ca irait sur une petite demo, mais sur un vrai jeu bien chargé, ca coute (relativement) cher !


Comme tu le dis toi même plus bas les jeux modernes font déjà un nombre conséquent de passes (ne serait ce que pour les shadow maps tu fais un rendu Z par source lumineuse, 6 pour les sources omni !) je ne vois pas en quoi en faire une de plus ferait subitement s'écrouler les performances.

Citation :Rajoutons à ça qu'il faut dans bien des cas utiliser la texture elle meme pour faire ce rendu (dans le cas d'un alpha test)...


Dans le pire des cas en ignorant le test alpha tu ramèneras des pages qu is'avèreront inutiles, ça n'est pas vaiment rédhibitoire.

Citation :Les jeux modernes font deja beaucoup de rendus (ZPass, Shadow maps, Rendu final, etc...), inutile d'en rajouter encore un...


je vois pas pourquoi : ces dernières années c'est de ce genre de techniques utilisant de multiples rendus que sont venus les algorithmes les plus intéressants. Les GPU deviennent de plus en plus puissants autant les exploiter.

Citation :Recuperer la texture sur le CPU ensuite, c'est encore pire... Il faut plusieurs trames de decalages pour ne pas bloquer le CPU... Pas tres pratique... Obligé d'utiliser des double ou triple buffers, etc...


ça c'est effectivement déjà un problème plus sèrieux, mais avec les PBO en OpenGL tu dois pouvoir rapatrier ça de façon asynchrone avec d'assez bonnes perfs surtout que le PCI-Express améliore les performances en readback depuis la VRAM (enfin... en théorie même si on voit que dans la pratique c'est pas encore vraiment le cas). Sur les consoles tu n'as aucun problème : le rendu peut se faire directement en mémoire principale.

Citation :Quant à parcourir et traiter le résultat (4Mo pour une render target en 32bits., vu que les RTs 8 ou 16bits ça ne cours plus vraiment les rues) sur le CPU.. Ca ne serait qu'un gros gaspillage de temps CPU (Sans parler de la memoire cache) !


ça pourrait occupper un des cores de nos chers CPU au lieu de se tourner les pouces ;) en plus en optimisant ça en SIMD tu peux traiter plusieurs pixels simultanément et comme le parcours est super linéaire le prefetch est optimal.

Citation :Y'a quand meme 1000 fois plus rapide et beaucoup beaucoup plus simple pour faire tout ça, et sans embeter le GPU qui a certainement des choses bien plus interessantes à faire ! ;)


Comme indiqué il ne s'agit que de suppositions basé sur une implémentation fonctionnelle, après il ya sans doute d'autres façons de faire, peut être plus efficaces, 1000 fois plus rapides par contre j'en doute ;)

ZeJeff 12/09/2007 17:19
Masquer
-0+
ZeJeff

0) J'ai pas dit que ca ne fonctionnait pas.. loin de là.. Mais c'est utiliser un lance roquette pour ecraser un moustique...
1) Je ne dis pas que les performances vont s'ecrouler.. mais juste qu'un rendu supplementaire, c'est toujours du temps perdu.. Il n'est pas rare qu'un rendu prenne plus d'une ou deux milliseconde... c'est quand meme enorme.. Surtout si on vise le 60fps

1.bis) Le truc des alpha test n'est vraiment pas à negliger..

2) Non, les consoles (du moins la Xbox360 ou la PS3) ne peuvent pas faire de rendu dans la RAM principale.. Il faut rappatrier les render target depuis la VRAM.. Et ca prends un certain temps.

3) Occupper un core... ouai, mais y'a quand meme des trucs nettement plus interessant à lui faire faire nan ? ;-)

4) Ben si.. 1000 fois plus rapide... et largement meme... mais je peux pas trop en dire plus... Disons que globalement.. pourquoi s'embeter alors qu'on peut avoir toutes ces infos quasiment gratos ? ;-)

Zeross 12/09/2007 17:48
Masquer
-0+
Zeross

a écrit :

2) Non, les consoles (du moins la Xbox360 ou la PS3) ne peuvent pas faire de rendu dans la RAM principale.. Il faut rappatrier les render target depuis la VRAM.. Et ca prends un certain temps.




Pour la PS3 il faudrait que je revérifie mais il me semble que ça a été spécifiquement mentionné et globalement toutes les puces NVIDIA en sont capables depuis qu'ils ont introduit le Turbocache même si c'est pas exposé par l'API.

Pour la Xbox 360 c'est carrément sûr et certain, enfin ma tournure n'est peut être pas correcte : sur la Xbox 360 le backbuffer est toujours dans l'EDRAM donc certes le rendu ne se fait pas à proprement parler en RAM, mais il y a une copie systématique dans la mémoire principale lors du swap buffers (et effectue un downsample de l'AA par la même occasion si c'est utilisé) et c'est de la RAM que le RAMDAC tire ses données avant de les balancer à l'écran. En fait il doit même y avoir moyen d'utiliser le MEMXPORT pour écrire les données en mémoire directement en économisant une passe et cette discussion m'a permis de me rappeler d'd'une citation de Carmack qui mentionnait quelque chose de similaire sur l'utilisation du MEMEXPORT, après quelques recherches sur Google j'ai retrouvé ce qu'il disait exactement :

Citation :Until recently I was using the memory export feature on the 360 to determine the active pages, but I am now doing it the same way as the other platforms with a separate rendering pass for consistency.

John Carmack


En tout cas ça semble bien confirmer qu'il utilise une passe disctincte pour déterminer les pages nécessaires.

ZeJeff 12/09/2007 17:54
Masquer
-0+
ZeJeff

Effectivement, on doit pouvoir utiliser le memexport sur la 360..
Mais c'est pas forcement plus rapide qu'un tracé en EDRAM suivi d'un resolve...

Mais, Carmack ou pas, je ne comprends toujours pas pourquoi s'embeter avec le GPU pour ça alors que toutes les infos sont à portée de main du CPU pour beaucoup moins cher (si on sait s'y prendre) ?!?! O_o

PS : toi aussi t'es du "metier" ?! ;-)

ZeJeff 12/09/2007 17:56
Masquer
-0+
ZeJeff

edit : oops "triplon" ;-)

ZeJeff 12/09/2007 17:57
Masquer
-0+
ZeJeff

edit : oops "triplon"

Zeross 12/09/2007 18:31
Masquer
-0+
Zeross

Du métier ? euh non :D enfin si tu voulais dire dans les jeux vidéos, mais je bosse quand même sur du rendu temps réel.
Pour l'écriture du RSX en RAM principale je me souvenais bien que ça avait été indiqué quelque part :

j'suis à la masse de pas avoir retrouvé ça plus tôt : c'est moi qui avais écrit la news :D

Donc le RSX peut écrire en RAM principale (à 10.6Go/s mesuré deux fois moins que dans la VRAM) mais effectivement ça ne dit pas qu'il peut faire le rendu en RAM directement, ça pourrait être mesuré lors d'une copie de données de la VRAM à la RAM.

ZeJeff 12/09/2007 19:33
Masquer
-0+
ZeJeff

J'te reponds par MP ;-)

Miky 2001 13/09/2007 01:51
Masquer
-0+
Miky 2001

Tres bon Article... vraiment interessant, et les commentaires valent également le coup.

Juste une question concernant ces "Megatextures".

Comme je l'ai compris, elles permettent de définir "une partie" des décors, une zone. Mais que se passe t'il lorsque l'on doit afficher une autre zone ? une nouvelle Megatexture est adressée je suppose, mais si l'on souhaite avoir une grande distance d'affichage le moteur ne risque t'il pas de saturer bcp plus rapidement qu'avec un moteur "plus classique" ???

J'imagine un rendu type Oblivion et je me demande comment se type d'algo pourrait supporter cela....



PS : Tres bon site que je re découvre avec grand intérêt avec des articles comme ceux là ;)

Miky 2001 13/09/2007 01:55
Masquer
-0+
Miky 2001

doublon...

chacun son tour, désolé.....

SirJeannot 18/09/2007 03:16
Masquer
-0+
SirJeannot

de même, vraiment intéressant. on en apprend beaucoup :)

nystep 08/04/2008 19:26
Masquer
-0+
nystep

"Après plusieurs années de silence, id Software sort de son mutisme et se relance dans la bataille des moteurs 3D en venant s’attaquer sérieusement à l’Unreal Engine 3"

cough cough. Non mais serieux carmack en ce moment il est serieusement overrated.. on fait mieux dans notre boite que sa merde de megatextures... on devrait lui vendre notre tech..

serious gilles 09/04/2008 19:23
Masquer
-0+
serious gilles

C'est quoi ta boite nystep par curiosité ? Quantic Dream ?

serious gilles 09/04/2008 19:56
Masquer
-0+
serious gilles

nystep :
"Après plusieurs années de silence, id Software sort de son mutisme et se relance dans la bataille des moteurs 3D en venant s’attaquer sérieusement à l’Unreal Engine 3"cough cough. Non mais serieux carmack en ce moment il est serieusement overrated.. on fait mieux dans notre boite que sa merde de megatextures... on devrait lui vendre notre tech..



c'est vrai que les megatextures c'est pas forcément l'idéal, surtout que niveau qualité des filtrages on y perds pas mal, en tout cas c'est moins propre que des textures classiques + aniso...

Anonyme 13/08/2008 09:09
Masquer
-0+

On a vraiment l'impression que certains ne lisent que le début et la fin des articles. Le but des megatextures n'est pas de créer la solution ultimes pour les rendus 3D sur PC hyper-puissants. Il s'agit d'une solution élégante permettant une bonne qualité d'image et un Framerate correct. Le tout portable sur différentes architectures et surtout qui soit très simple à utiliser pour les concepteurs de niveaux. Il n'y a pas que la technique qui rentre en ligne de compte dans la conception d'un jeu vidéo....

Publicité