Un commentaire de Carmack sur les cartes vidéos pour Doom III

Un commentaire de Carmack sur les cartes vidéos pour Doom III - Hardware

Marsh Posté le 29-05-2002 à 00:08:33    

Bon je ne l'ai pas encore vu posté ici mais avec tous les topics sur Doom III ça a pu m'échapper  
 

Citation :

?NVidia has been stellar in terms of driver quality and support and doing all of the things right,? says Carmack, who has been an outspoken evangelist for NVidia?s GeForce technology. ?For the past few years, they have been able to consistently outplay ATI on every front. The problem is that they are about one-half step out of synch with the hardware generation because they did Xbox instead of focusing everything on their next board. So they are a little bit behind ATI.?
       ?I told everyone that I was going to demonstrate Doom III on the best hardware, and there has been no collusion or kickbacks or anything like that going on. Our objective is the technical merit.?
       ?The new ATI card was clearly superior. I don?t want to ding NVidia for anything because NVidia has done everything they possibly could; but in every test we ran, ATI was faster.?


 
Clair net et sans bavure, alors que certains ne voyaient en John Carmack qu'un PR Nvidia celà met enfin les choses au clair. Après avoir défendu 3dfx du temps des Voodoo 1 et 2 puis nvidia du temps des GF John Carmack se range d côté d'Ati cette fois. Au moins ça prouve une chose, c'est que contrairement à ce que certaines mauvaises langues croyaient l'avis de Carmack n'est dicté que par des considérations techniques et non pas vulgairement commerciales.
 
En tout cas moi qui suis plutôt Nvidia sans tomber dans la "fanboyism attitude" je dois féliciter Ati car avec la Radeon, la 8500 et maintenant la R300 Ati a réussit à non seulement combler son retard mais aussi à supplanter Nvidia ! Enfin attendons de voir pour juger mais c'est un sacré beau coup du Canadien, entre ça et le retour de Matrox et de 3DLabs la concurrence se réveille dans le secteur de la 3D et ça promet :)

 

[jfdsdjhfuetppo]--Message édité par Zeross le 29-05-2002 à 00:11:54--[/jfdsdjhfuetppo]


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique
Reply

Marsh Posté le 29-05-2002 à 00:08:33   

Reply

Marsh Posté le 29-05-2002 à 00:11:33    

carmack il est bien gentil mais ses paroles ne sont pas l'évangile.
quand il réclame des couleurs 64 bits à l'époque où le 32 bits nous ralentit encore, ça me fait pisser de rire!

Reply

Marsh Posté le 29-05-2002 à 00:13:50    

wave a écrit a écrit :

 
quand il réclame des couleurs 64 bits



 :??:  c vrai le dingue  :pt1cable:  je pense pas ke l'oeil en voit plus de 16 millions

Reply

Marsh Posté le 29-05-2002 à 00:14:45    

wave a écrit a écrit :

carmack il est bien gentil mais ses paroles ne sont pas l'évangile.
quand il réclame des couleurs 64 bits à l'époque où le 32 bits nous ralentit encore, ça me fait pisser de rire!  




 
t'as toujours pas compris que le combat 16/32 bpp ça influe sur la bande passante mémoire, car c'est le format du framebuffer, alors que le 64 bits réclamé c'est de la précision temporaire qui n'a aucune influence sur la bande-passante ?

Reply

Marsh Posté le 29-05-2002 à 00:15:33    

wave a écrit a écrit :

carmack il est bien gentil mais ses paroles ne sont pas l'évangile.
quand il réclame des couleurs 64 bits à l'époque où le 32 bits nous ralentit encore, ça me fait pisser de rire!  




 
heu ... ce dont tu parles c'est une prédiction/souhait (selon ;) ). mais le texte là explique ce que c'est passé pour le choix de la carte pour la démo Doom 3 durant l'E3. y a pas de souhait, ni de prédiction.  
 
Il exprime un fait qu'il a vécu.

Reply

Marsh Posté le 29-05-2002 à 00:18:06    

bjone a écrit a écrit :

 
 
t'as toujours pas compris que le combat 16/32 bpp ça influe sur la bande passante mémoire, car c'est le format du framebuffer, alors que le 64 bits réclamé c'est de la précision temporaire qui n'a aucune influence sur la bande-passante ?  




 
arf  .. grilled :D
 
heu tout ce que je peux dire c'est que je soutiens l'explication de bjone :)

Reply

Marsh Posté le 29-05-2002 à 00:18:45    

Citation :

t'as toujours pas compris que le combat 16/32 bpp ça influe sur la bande passante mémoire, car c'est le format du framebuffer, alors que le 64 bits réclamé c'est de la précision temporaire qui n'a aucune influence sur la bande-passante ?


peut-être mais ça a une influence sur le nombre de transistors nécessaires, et très peu sur l'effet visuel.

Reply

Marsh Posté le 29-05-2002 à 00:19:27    

si les gens savaient qu'en S3TC tu as en moyenne 4 bits par pixel pour les textures, y diraient "putain c'est trop du pipo le 32 bpp alors" :D

Reply

Marsh Posté le 29-05-2002 à 00:19:56    

Ce que peu de gens comprennent c'est que Carmack souhaitait surtout davantage de précision pour diminuer les artefacts lors de l'accumulation de passes. il voulait ainsi passer à un format de pixels flottants sur 16 bits. Vous noterez que d'une part les stations haut de gamme genre SGI offre déjà un format 48 bits (12 bits par composante) et que petit à petit on y vient sur PC (Parhelia et les RGB sur 10 bits). Bref Carmack n'est pas parti dans un petit trip à lui, il voit à long terme c'est tout.
 
L'oeil ne distingue pas toutes les couleurs reproductibles en 32 bits c'est vrai, mais en même temps le format RGB ne reproduit pas toutes les nuances que l'oeil peut distinger donc ce n'est pas un argument ;)


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique
Reply

Marsh Posté le 29-05-2002 à 00:21:05    

wave a écrit a écrit :

Citation :

t'as toujours pas compris que le combat 16/32 bpp ça influe sur la bande passante mémoire, car c'est le format du framebuffer, alors que le 64 bits réclamé c'est de la précision temporaire qui n'a aucune influence sur la bande-passante ?


peut-être mais ça a une influence sur le nombre de transistors nécessaires, et très peu sur l'effet visuel.  




 
là je suis plus d'accord....
disons qu'en multi-texturing lourd, plus des shaders dont les calculs sont +poussés avoir 16 bits par canal peut aider....
 
enfin le nombre de transistors évoluent beaucoup + facilement que la bande-passante mémoire... donc c'est moins un frein...

Reply

Marsh Posté le 29-05-2002 à 00:21:05   

Reply

Marsh Posté le 29-05-2002 à 00:21:35    

wave a écrit a écrit :

Citation :

t'as toujours pas compris que le combat 16/32 bpp ça influe sur la bande passante mémoire, car c'est le format du framebuffer, alors que le 64 bits réclamé c'est de la précision temporaire qui n'a aucune influence sur la bande-passante ?


peut-être mais ça a une influence sur le nombre de transistors nécessaires, et très peu sur l'effet visuel.  




 
qu'est-ce t'en sait. tu peux me citer un jeu qui associe 8 texture et fait plusieurs modification d'éclairage dynamique avant de fournir le résultat final ?
 
le prob est là. Les dev limite actuellement le nombre de calul interne pour éviter d'avoir une trop grand perte de précision dans la couleur finale.

Reply

Marsh Posté le 29-05-2002 à 00:22:15    

;)
 
bon allez fo po toucher à carmack en ce moment ;)

Reply

Marsh Posté le 29-05-2002 à 00:23:08    

:D

Reply

Marsh Posté le 29-05-2002 à 00:24:20    

bjone a écrit a écrit :

si les gens savaient qu'en S3TC tu as en moyenne 4 bits par pixel pour les textures, y diraient "putain c'est trop du pipo le 32 bpp alors" :D  




 
putain c'est trop du pipo. abat le 32 bits :D

 

[jfdsdjhfuetppo]--Message édité par barbarella le 29-05-2002 à 00:24:38--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 00:25:31    

Pour le 64 bits Carmack voulait quand même un backbuffer 64 bits avec un dithering vers un framebuffer 32 bits lors du swap des buffers. Dans ce cas ça aurait eu un impact direct sur les performances.


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique
Reply

Marsh Posté le 29-05-2002 à 00:33:36    

A tous ceux qui pensaient qu'ATI serait toujours à la bourre et aurait toujours des drivers pourris... :p  :)  Faut dire que dans la 3D la roue tourne, avant-hier c'était 3dfx, hier Nvidia, aujourd'hui ATI....

Reply

Marsh Posté le 29-05-2002 à 00:33:54    

Zeross a écrit a écrit :

Pour le 64 bits Carmack voulait quand même un backbuffer 64 bits avec un dithering vers un framebuffer 32 bits lors du swap des buffers. Dans ce cas ça aurait eu un impact direct sur les performances.  




 
ah tiens je ne connaissais pas cette précision, merci :)
 
mais pourquoi pas. D'ici - 1 ans on aura des DDR 256 bits a 400 MHz, soit sans recalculer du 25 Go/s de débit.  
 
Bah on verra bien ou ça nous même ..

Reply

Marsh Posté le 29-05-2002 à 00:36:31    

Citation :

Ce que peu de gens comprennent c'est que Carmack souhaitait surtout davantage de précision pour diminuer les artefacts lors de l'accumulation de passes. il voulait ainsi passer à un format de pixels flottants sur 16 bits. Vous noterez que d'une part les stations haut de gamme genre SGI offre déjà un format 48 bits (12 bits par composante) et que petit à petit on y vient sur PC (Parhelia et les RGB sur 10 bits). Bref Carmack n'est pas parti dans un petit trip à lui, il voit à long terme c'est tout.
 
L'oeil ne distingue pas toutes les couleurs reproductibles en 32 bits c'est vrai, mais en même temps le format RGB ne reproduit pas toutes les nuances que l'oeil peut distinger donc ce n'est pas un argument


peut-être mais 64 bits c'est du délire.
c'est bien de voir à long terme mais si ça doit empêcher de voir la poutre qu'on a dans l'oeil...
actuellement ça reste le nombre de polygones et la bande passante.
les fabricants sont en train d'ajouter les pixels shaders alors qu'on arrive déjà pas à afficher assez de polygones sans les utiliser.
déjà le T&L non-programmable c'était une connerie marketing temporaire dont le principal effet était de ralentir les cartes qui le géraient pas, maintenant y'a les vertex shaders. mais avant de faire faire plein de calculs à la carte, ça serait bien de commencer par avoir une carte capable de bouffer tous les polygones qu'un cpu récent avec SSE peut lui envoyer.
actuellement la politique (à laquelle adhère totalement carmack), c'est de laisser faire le moteur opengl, dont la version et les bugs dépend du driver et de la carte vidéo, et de tout faire bouffer à la carte.
On a des cpu capables de faire TOUS les calculs en dehors de l'affichage, au lieu de ça on donne tout à faire à la carte et on manque de bande passante.
a moins que nvidia soit meilleur qu'intel et AMD, je comprends toujours pas pourquoi on veut utiliser une API et des shaders différents d'une carte à l'autre au lieu d'utiliser SSE. A la rigueur si un jour on trouve une carte qui a du temps libre après avoir tracé les polygones, pourquoi pas...

 

[jfdsdjhfuetppo]--Message édité par wave le 29-05-2002 à 00:37:49--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 00:37:41    

Zeross a écrit a écrit :

Pour le 64 bits Carmack voulait quand même un backbuffer 64 bits avec un dithering vers un framebuffer 32 bits lors du swap des buffers. Dans ce cas ça aurait eu un impact direct sur les performances.  




 
oui, mais avoir un back-buffer 64 bits ne serait utile qu'en cas de multi-texturing/blending (que ce soit du multi-texturing standard ou du pixel shader) intense qui ne passe pas par des registres internes à la carte...
hors les cartes vont être de plus en plus souple au niveau multi-texturing (regsitre de loopback etc etc...)
 
dans ce cas le dithering 64->32 vo mieux qu'il soit au niveau ramdac plustôt qu'un traitement buffer 64 -> buffer 32 (un peu comme les voodoo qui font du 32 interne -> framebuffer 16 buffers ditheré :D par dithering breveté -> ramdac 24 bits).
 
enfin on va y aller progressivement, d'autant plus que le hard peut augmenter en précision interne sans que ça impose la moindre prise en compte coté moteur... (c bo l'accélération hard qd même :D)

Reply

Marsh Posté le 29-05-2002 à 00:40:28    

Citation :

qu'est-ce t'en sait. tu peux me citer un jeu qui associe 8 texture et fait plusieurs modification d'éclairage dynamique avant de fournir le résultat final ?
 
le prob est là. Les dev limite actuellement le nombre de calul interne pour éviter d'avoir une trop grand perte de précision dans la couleur finale.


pour les beaux éclairages avec réflection spéculaire, on additionne tout en virgule flottante AVANT de commencer à tracer le polygone.
tu vas me dire que ça limite au gouraud au lieu du phong, je te répondrai qu'à quantité de calculs égale, on obtient un meilleur résultat en faisant du gouraud et en augmentant le nombre de polygones, ça permet de mieux définir la forme de l'objet.

Reply

Marsh Posté le 29-05-2002 à 00:42:58    

Citation :

dans ce cas le dithering 64->32 vo mieux qu'il soit au niveau ramdac plustôt qu'un traitement buffer 64 -> buffer 32 (un peu comme les voodoo qui font du 32 interne -> framebuffer 16 buffers ditheré   par dithering breveté -> ramdac 24 bits).


pas besoin. au moment de l'affichage 32 bits suffisent. A la rigueur on peut monter à 35 bits pour etre parfait (à part peut-être avec les moniteurs qu'on aura dans 20 ans), mais mettre un frame buffer en 64 bits ça bouffe trop de bande passante.

Reply

Marsh Posté le 29-05-2002 à 00:44:56    

Citation :

A tous ceux qui pensaient qu'ATI serait toujours à la bourre et aurait toujours des drivers pourris...       Faut dire que dans la 3D la roue tourne, avant-hier c'était 3dfx, hier Nvidia, aujourd'hui ATI....


j'attends de voir. les shaders d'ATI ont + de possibilités, mais si la rapidité ne suit pas ça servira pas. Un peu comme afficher du 32 bits sur une TNT1, c'était bien pour les screenshots:D
a la rigueur ça peut servir aux développeurs, mais ça nécessitera la génération suivante pour etre fluide.

Reply

Marsh Posté le 29-05-2002 à 00:50:44    

Puisqu'on a dévié voici l'opinion de Carmack sur le 64 bits après tout tout le monde ne lit pas ses .plan et c'est pas avec tois lignes dans un magazine qu'on peut comprendre toute la portée de ce changement :

Citation :

We need more bits per color component in our 3D accelerators.
 
I have been pushing for a couple more bits of range for several years now,
but I now extend that to wanting full 16 bit floating point colors throughout
the graphics pipeline. A sign bit, ten bits of mantissa, and five bits of
exponent (possibly trading a bit or two between the mantissa and exponent).
Even that isn't all you could want, but it is the rational step.
 
It is turning out that I need a destination alpha channel for a lot of the
new rendering algorithms, so intermediate solutions like 10/12/10 RGB
formats aren't a good idea. Higher internal precision with dithering to 32
bit pixels would have some benefit, but dithered intermediate results can
easily start piling up the errors when passed over many times, as we have
seen with 5/6/5 rendering.
 
Eight bits of precision isn't enough even for full range static image
display. Images with a wide range usually come out fine, but restricted
range images can easily show banding on a 24-bit display. Digital television
specifies 10 bits of precision, and many printing operations are performed
with 12 bits of precision.
 
The situation becomes much worse when you consider the losses after multiple
operations. As a trivial case, consider having multiple lights on a wall,
with their contribution to a pixel determined by a texture lookup. A single
light will fall off towards 0 some distance away, and if it covers a large
area, it will have visible bands as the light adds one unit, two units, etc.
Each additional light from the same relative distance stacks its contribution
on top of the earlier ones, which magnifies the amount of the step between
bands: instead of going 0,1,2, it goes 0,2,4, etc. Pile a few lights up like
this and look towards the dimmer area of the falloff, and you can believe you
are back in 256-color land.
 
There are other more subtle issues, like the loss of potential result values
from repeated squarings of input values, and clamping issues when you sum up
multiple incident lights before modulating down by a material.
 
Range is even more clear cut. There are some values that have intrinsic
ranges of 0.0 to 1.0, like factors of reflection and filtering. Normalized
vectors have a range of -1.0 to 1.0. However, the most central quantity in
rendering, light, is completely unbounded. We want a LOT more than a 0.0 to
1.0 range. Q3 hacks the gamma tables to sacrifice a bit of precision to get
a 0.0 to 2.0 range, but I wanted more than that for even primitive rendering
techniques. To accurately model the full human sensable range of light
values, you would need more than even a five bit exponent.
 
This wasn't much of an issue even a year ago, when we were happy to just
cover the screen a couple times at a high framerate, but realtime graphics
is moving away from just "putting up wallpaper" to calculating complex
illumination equations at each pixel. It is not at all unreasonable to
consider having twenty textures contribute to the final value of a pixel.
Range and precision matter.
 
A few common responses to this pitch:
 
"64 bits per pixel??? Are you crazy???" Remember, it is exactly the same
relative step as we made from 16 bit to 32 bit, which didn't take all
that long.  
 
Yes, it will be slower. That's ok. This is an important point: we can't
continue to usefully use vastly greater fill rate without an increase in
precision. You can always crank the resolution and multisample anti-alaising
up higher, but that starts to have diminishing returns well before you use of
the couple gigatexels of fill rate we are expected to have next year. The
cool and interesting things to do with all that fill rate involves many
passes composited into less pixels, making precision important.
 
"Can we just put it in the texture combiners and leave the framebuffer at 32
bits?" No. There are always going to be shade trees that overflow a given
number of texture units, and they are going to be the ones that need the
extra precision. Scales and biases between the framebuffer and the higher
precision internal calculations can get you some mileage (assuming you can
bring the blend color into your combiners, which current cards can't), but
its still not what you want. There are also passes which fundamentally
aren't part of a single surface, but still combine to the same pixels, as
with all forms of translucency, and many atmospheric effects.
 
"Do we need it in textures as well?" Not for most image textures, but it
still needs to be supported for textures that are used as function look
up tables.
 
"Do we need it in the front buffer?" Probably not. Going to a 64 bit front
buffer would probably play hell with all sorts of other parts of the system.
It is probably reasonable to stay with 32 bit front buffers with a blit from
the 64 bit back buffer performing a lookup or scale and bias operation before
dithering down to 32 bit. Dynamic light adaptation can also be done during
this copy. Dithering can work quite well as long as you are only performing
a single pass.
 
 
I used to be pitching this in an abstract "you probably should be doing this"
form, but two significant things have happened that have moved this up my hit
list to something that I am fairly positive about.
 
Mark Peercy of SGI has shown, quite surprisingly, that all Renderman surface
shaders can be decomposed into multi-pass graphics operations if two
extensions are provided over basic OpenGL: the existing pixel texture
extension, which allows dependent texture lookups (matrox already supports a
form of this, and most vendors will over the next year), and signed, floating
point colors through the graphics pipeline. It also makes heavy use of the
existing, but rarely optimized, copyTexSubImage2D functionality for
temporaries.
 
This is a truly striking result. In retrospect, it seems obvious that with
adds, multiplies, table lookups, and stencil tests that you can perform any
computation, but most people were working under the assumption that there
were fundamentally different limitations for "realtime" renderers vs offline
renderers. It may take hundreds or thousands of passes, but it clearly
defines an approach with no fundamental limits. This is very important.
I am looking forward to his Siggraph paper this year.
 
Once I set down and started writing new renderers targeted at GeForce level
performance, the precision issue has started to bite me personally. There
are quite a few times where I have gotten visible banding after a set of
passes, or have had to worry about ordering operations to avoid clamping.
There is nothing like actually dealing with problems that were mostly
theoretical before...
 
64 bit pixels. It is The Right Thing to do. Hardware vendors: don't you be
the company that is the last to make the transition.

 

[jfdsdjhfuetppo]--Message édité par Zeross le 29-05-2002 à 00:52:36--[/jfdsdjhfuetppo]


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique
Reply

Marsh Posté le 29-05-2002 à 00:50:48    

wave a écrit a écrit :

Citation :

Ce que peu de gens comprennent c'est que Carmack souhaitait surtout davantage de précision pour diminuer les artefacts lors de l'accumulation de passes. il voulait ainsi passer à un format de pixels flottants sur 16 bits. Vous noterez que d'une part les stations haut de gamme genre SGI offre déjà un format 48 bits (12 bits par composante) et que petit à petit on y vient sur PC (Parhelia et les RGB sur 10 bits). Bref Carmack n'est pas parti dans un petit trip à lui, il voit à long terme c'est tout.
 
L'oeil ne distingue pas toutes les couleurs reproductibles en 32 bits c'est vrai, mais en même temps le format RGB ne reproduit pas toutes les nuances que l'oeil peut distinger donc ce n'est pas un argument


peut-être mais 64 bits c'est du délire.
c'est bien de voir à long terme mais si ça doit empêcher de voir la poutre qu'on a dans l'oeil...
actuellement ça reste le nombre de polygones et la bande passante.
les fabricants sont en train d'ajouter les pixels shaders alors qu'on arrive déjà pas à afficher assez de polygones sans les utiliser.
déjà le T&L non-programmable c'était une connerie marketing temporaire dont le principal effet était de ralentir les cartes qui le géraient pas, maintenant y'a les vertex shaders. mais avant de faire faire plein de calculs à la carte, ça serait bien de commencer par avoir une carte capable de bouffer tous les polygones qu'un cpu récent avec SSE peut lui envoyer.
actuellement la politique (à laquelle adhère totalement carmack), c'est de laisser faire le moteur opengl, dont la version et les bugs dépend du driver et de la carte vidéo, et de tout faire bouffer à la carte.
On a des cpu capables de faire TOUS les calculs en dehors de l'affichage, au lieu de ça on donne tout à faire à la carte et on manque de bande passante.
a moins que nvidia soit meilleur qu'intel et AMD, je comprends toujours pas pourquoi on veut utiliser une API et des shaders différents d'une carte à l'autre au lieu d'utiliser SSE. A la rigueur si un jour on trouve une carte qui a du temps libre après avoir tracé les polygones, pourquoi pas...  
 
 




 
parceque le SSE est un jeu d'instruction implémenté différemment de cpu en cpu, et que si tu voulais faire les choses bien, il te faudrait des routines SSE pour un athlon xp, une pour un p3, et une pour un P4.
rien qu'a l'heure actuelle.
 
alors qu'une API comme le D3D ou l'OpenGL te dégages de certaines restrictions, et te permet d'avoir une application dont les performances suivent linéarement le GPU.
 
Regarde Quake 1/2/3 => il sont fondamentalement T&L.
Ce qui fait que Quake3, profite gentiment des nouvelles cartes 3D même 3 ans après avoir été pondu.
 
Regarde Unreal => il est fondamentalement avec une géométrie logicielle.
Ce qui fait qu'il sature comme un ours même avec du matos récent.  
 
Quake 3 te donne du 300+ images/secs en 640x480 sur un p4 2.4ghz+gf3.
Unreal sature en dessous de 100 fps (alors que hum la charge polygonale est loin d'être supérieure)
 
Ensuite:

Citation :


déjà le T&L non-programmable c'était une connerie marketing temporaire dont le principal effet était de ralentir les cartes qui le géraient pas, maintenant y'a les vertex shaders. mais avant de faire faire plein de calculs à la carte, ça serait bien de commencer par avoir une carte capable de bouffer tous les polygones qu'un cpu récent avec SSE peut lui envoyer.


 
Si tu programmais en D3D eou n OGL, et qui tu faisais tes propres tests et lisais des docs de programmation de nVidia/Ati, il y a un goulot d'étranglement entre le CPU et le GPU qui est l'Agp.  
 
Quelque soit le débit vertex/secs qu'atteindra le CPU, ce sera bridé par l'Agp.
 
Ensuite même si il n'y avais pas cette restriction, à MEME année, la bande passante en local à la carte 3D est 5x à 10x (oui 10x) supérieure à ce que l'on peut avoir sur une carte mère.
 
Dans l'absolu, un GPU a la POSSIBLITE de monter bien plus haut qu'un CPU en géométrie...
Et il le font...
 
Il faut pas oublier une chose: déjà il y a toujours des GPU qui seront plus performants que des CPU en vertexs/secs, mais en plus les GPU ne seront pas pénalisés dans certains cas.
 
Par exemple, la normalisation des vecteurs normaux de chaque vertex est déjà quasiment transparente rien que sur une Geforce 1 (tu perds à tout casser 5% en performances géométriques à activer la normalisation automatique)

Reply

Marsh Posté le 29-05-2002 à 00:53:47    

wave a écrit a écrit :

Citation :

qu'est-ce t'en sait. tu peux me citer un jeu qui associe 8 texture et fait plusieurs modification d'éclairage dynamique avant de fournir le résultat final ?
 
le prob est là. Les dev limite actuellement le nombre de calul interne pour éviter d'avoir une trop grand perte de précision dans la couleur finale.


pour les beaux éclairages avec réflection spéculaire, on additionne tout en virgule flottante AVANT de commencer à tracer le polygone.
tu vas me dire que ça limite au gouraud au lieu du phong, je te répondrai qu'à quantité de calculs égale, on obtient un meilleur résultat en faisant du gouraud et en augmentant le nombre de polygones, ça permet de mieux définir la forme de l'objet.  




 
A quantité de calculs égale. elle est bonne celle-là. Ben on le sait que gouraud fait un interpolation sur des valeur et non sur des vecteurs. mais si on utilise phong c'est pas pour avoir moins de calcul mais plus de précision.
 
Pour s'approcher du BM de Blinn t'es obligé de prendre du phong ou un truc qui y ressemble.

 

[jfdsdjhfuetppo]--Message édité par barbarella le 29-05-2002 à 00:55:40--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 01:04:43    

Citation :

parceque le SSE est un jeu d'instruction implémenté différemment de cpu en cpu, et que si tu voulais faire les choses bien, il te faudrait des routines SSE pour un athlon xp, une pour un p3, et une pour un P4.
rien qu'a l'heure actuelle.


non!
le SSE sur P3/athlon XP est le même.
sur P4 aussi, rien à voir avec SSE2 qui fait de la double précision.

Citation :

Si tu programmais en D3D eou n OGL, et qui tu faisais tes propres tests et lisais des docs de programmation de nVidia/Ati, il y a un goulot d'étranglement entre le CPU et le GPU qui est l'Agp.  
 
Quelque soit le débit vertex/secs qu'atteindra le CPU, ce sera bridé par l'Agp.  
 
Ensuite même si il n'y avais pas cette restriction, à MEME année, la bande passante en local à la carte 3D est 5x à 10x (oui 10x) supérieure à ce que l'on peut avoir sur une carte mère.  


oui, c'est pour ça qu'on utilise la carte pour tracer les polygones, opération qui demande beaucoup de bande passante et beaucoup de registres, bref pas adaptée à nos cpu.
pour les calculs T&L il en est autrement: moins de bande passante, + d'opérations complexes auquelles SSE est parfaitement adapté.
En parlant de bande passante AGP, bizzarement les voodoo sans T&L n'avaient aucun problème de ce côté-là.
 

Citation :

Regarde Quake 1/2/3 => il sont fondamentalement T&L.  
Ce qui fait que Quake3, profite gentiment des nouvelles cartes 3D même 3 ans après avoir été pondu.  
 
Regarde Unreal => il est fondamentalement avec une géométrie logicielle.  
Ce qui fait qu'il sature comme un ours même avec du matos récent.  
 
Quake 3 te donne du 300+ images/secs en 640x480 sur un p4 2.4ghz+gf3.  
Unreal sature en dessous de 100 fps (alors que hum la charge polygonale est loin d'être supérieure)  


unreal sature à 100FPS (c'est pas grave), si on y met une grosse carte vidéo.  
mais l'évolution de nos machine ne se limite pas à la carte vidéo, les cpu progressent autant.
et puis ça m'étonnerais qu'unreal exploite pleinement SSE, vu l'époque où il est sorti.

Citation :

Par exemple, la normalisation des vecteurs normaux de chaque vertex est déjà quasiment transparente rien que sur une Geforce 1 (tu perds à tout casser 5% en performances géométriques à activer la normalisation automatique)


c'est pas mortel non plus pour un cpu comme opération. Par contre un éclairage spéculaire prend du temps à une gf1.
et puis le cpu peut calculer PENDANT que la gpu trace un polygone. Ca devient difficile de juger ça parce qu'avant la généralisation de SSE les moteurs étaient déjà orientés T&L hardware, mais franchement je suis convaincu que j'arriverai à fatiguer une carte vidéo récente uniquement avec le tracage de polygones quand j'aurai optimisé mon moteur SSE. Avec tous les avantages que ça comporte: meilleure compatibilité d'une carte à l'autre, coordonnées après transformations connues par le cpu pour les tests de collisions, possibilité de subdiviser les polygones manuellement là (et uniquement là) où on en a besoin (éclairage, forme courbe,...).

 

[jfdsdjhfuetppo]--Message édité par wave le 29-05-2002 à 01:06:26--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 01:05:00    

enfin tout se défends...
 
wait & see....
 
enfin tout l'art du hard, c'est d'être adapté aux besoins du moment, un peu en avance mais pas trop ;)
 
enfin dans 2/3 ans, les CG auront certainement un cache à framebuffer de porc en interne (les bitboys étaient cho pour foutre 32 mo dans le core du chip graphique avec un bus de 1024 bits alors....)

Reply

Marsh Posté le 29-05-2002 à 01:08:24    

Citation :

A quantité de calculs égale. elle est bonne celle-là. Ben on le sait que gouraud fait un interpolation sur des valeur et non sur des vecteurs. mais si on utilise phong c'est pas pour avoir moins de calcul mais plus de précision.
 
Pour s'approcher du BM de Blinn t'es obligé de prendre du phong ou un truc qui y ressemble.  


ce que je dis c'est que le phong augmente fortement le nombre de calculs par pixel. Autant augmenter le nombre de polygones suffisemment pour atteindre le même résultat visuel en gouraud au niveau de l'éclairage, ça permet d'affiner la forme des objets sans finalement faire + de calculs.

Reply

Marsh Posté le 29-05-2002 à 01:10:28    

heu,
 
le débat il est ou là ? sur l'interet de faire calculer le CPU plus que le GPU ?
 
Le CPU pourra pas suivre. enfin lui peut-être mais les transfert entre CPU/GPU non. Y a pas que la bande passante, y a aussi les temps d'attentes.  
 
Entre un accès d'une info entre GPU et sa RAM, et le GPU et la RAM de l'ordi y a un monde !

Reply

Marsh Posté le 29-05-2002 à 01:11:05    

Citation :

enfin tout se défends...
 
wait & see....
 
enfin tout l'art du hard, c'est d'être adapté aux besoins du moment, un peu en avance mais pas trop    
 
enfin dans 2/3 ans, les CG auront certainement un cache à framebuffer de porc en interne (les bitboys étaient cho pour foutre 32 mo dans le core du chip graphique avec un bus de 1024 bits alors....)


oui, mais je soupsçonne que l'art du hard deviennt dicté par la marketing: augmenter le nombre de fonctions pour vendre davantage que la concurrence. Ce qui m'a beaucoup déçu c'est les gf1 qui demandaient beaucoup au cpu et à l'AGP par rapport à une voodoo. Ce qui était un peu contradictoire avec le but recherché.
Mais bon on verra bien, faut que je finisse mon moteur:D

Reply

Marsh Posté le 29-05-2002 à 01:12:20    

Citation :

Entre un accès d'une info entre GPU et sa RAM, et le GPU et la RAM de l'ordi y a un monde !


ce monde est largement rempli par le temps de traçage d'un polygone. surtout que pendant ce temps la RAM vidéo est déjà fortement sollicitée.

Reply

Marsh Posté le 29-05-2002 à 01:14:15    

wave a écrit a écrit :

Citation :

parceque le SSE est un jeu d'instruction implémenté différemment de cpu en cpu, et que si tu voulais faire les choses bien, il te faudrait des routines SSE pour un athlon xp, une pour un p3, et une pour un P4.
rien qu'a l'heure actuelle.


non!
le SSE sur P3/athlon XP est le même.
sur P4 aussi, rien à voir avec SSE2 qui fait de la double précision.

Citation :

Si tu programmais en D3D eou n OGL, et qui tu faisais tes propres tests et lisais des docs de programmation de nVidia/Ati, il y a un goulot d'étranglement entre le CPU et le GPU qui est l'Agp.  
 
Quelque soit le débit vertex/secs qu'atteindra le CPU, ce sera bridé par l'Agp.  
 
Ensuite même si il n'y avais pas cette restriction, à MEME année, la bande passante en local à la carte 3D est 5x à 10x (oui 10x) supérieure à ce que l'on peut avoir sur une carte mère.  


oui, c'est pour ça qu'on utilise la carte pour tracer les polygones, opération qui demande beaucoup de bande passante et beaucoup de registres, bref pas adaptée à nos cpu.
pour les calculs T&L il en est autrement: moins de bande passante, + d'opérations complexes auquelles SSE est parfaitement adapté.
 

Citation :

Regarde Quake 1/2/3 => il sont fondamentalement T&L.  
Ce qui fait que Quake3, profite gentiment des nouvelles cartes 3D même 3 ans après avoir été pondu.  
 
Regarde Unreal => il est fondamentalement avec une géométrie logicielle.  
Ce qui fait qu'il sature comme un ours même avec du matos récent.  
 
Quake 3 te donne du 300+ images/secs en 640x480 sur un p4 2.4ghz+gf3.  
Unreal sature en dessous de 100 fps (alors que hum la charge polygonale est loin d'être supérieure)  


unreal sature à 100FPS (c'est pas grave), si on y met une grosse carte vidéo.  
mais l'évolution de nos machine ne se limite pas à la carte vidéo, les cpu progressent autant.
et puis ça m'étonnerais qu'unreal exploite pleinement SSE, vu l'époque où il est sorti.

Citation :

Par exemple, la normalisation des vecteurs normaux de chaque vertex est déjà quasiment transparente rien que sur une Geforce 1 (tu perds à tout casser 5% en performances géométriques à activer la normalisation automatique)


c'est pas mortel non plus pour un cpu comme opération. Par contre un éclairage spéculaire prend du temps à une gf1.
et puis le cpu peut calculer PENDANT que la gpu trace un polygone. Ca devient difficile de juger ça parce qu'avant la généralisation de SSE les moteurs étaient déjà orientés T&L hardware, mais franchement je suis convaincu que j'arriverai à fatiguer une carte vidéo récente uniquement avec le tracage de polygones quand j'aurai optimisé mon moteur SSE. Avec tous les avantages que ça comporte: meilleure compatibilité d'une carte à l'autre, coordonnées après transformations connues par le cpu pour les tests de collisions, possibilité de subdiviser les polygones manuellement là (et uniquement là) où on en a besoin (éclairage, forme courbe,...).  




 
c'est vrai que ça se défends, toute solution a ses avantages & ses inconvéniants...
 
par contre pour le SSE je suis pas d'accord, le jeu d'instruction est supporté par tous les CPUs, mais chaque CPU a un flux d'instruction optimal qui lui est propre.
C'est comme le MMX, tu peux cibler différents CPUs.
 
Une voie CPU impose plusieurs variantes pour chaque implémentation de processeurs...
 
Alors qu'une voie GPU reporte un code source "asm" (dans le cas des Vertexs Shaders/Pixels Shaders) qui va être compilé par le driver.
 
Fondamentalement, une voie CPU souffrira d'une restriction d'évolution.
 
Ce que tu écrits comme code SSE comportera ptet des contres-optimisations pour un P5 ou un Hammer, tout comme du code "486 ou Pentium" ont pu être des contre-optimisations pour un Pentium Pro...
 
Après fo peser le pour et le contre...

Reply

Marsh Posté le 29-05-2002 à 01:16:25    

Citation :

par contre pour le SSE je suis pas d'accord, le jeu d'instruction est supporté par tous les CPUs, mais chaque CPU a un flux d'instruction optimal qui lui est propre.
C'est comme le MMX, tu peux cibler différents CPUs.


mouais en général les différences de vitesse sont assez faibles entre un code générique à peu près adapté à tous les cpu et un code spécifique à un seul cpu. Mais bon on verra ce que ça donne.

Reply

Marsh Posté le 29-05-2002 à 01:19:03    

wave a écrit a écrit :

Citation :

A quantité de calculs égale. elle est bonne celle-là. Ben on le sait que gouraud fait un interpolation sur des valeur et non sur des vecteurs. mais si on utilise phong c'est pas pour avoir moins de calcul mais plus de précision.
 
Pour s'approcher du BM de Blinn t'es obligé de prendre du phong ou un truc qui y ressemble.  


ce que je dis c'est que le phong augmente fortement le nombre de calculs par pixel. Autant augmenter le nombre de polygones suffisemment pour atteindre le même résultat visuel en gouraud au niveau de l'éclairage, ça permet d'affiner la forme des objets sans finalement faire + de calculs.  




 
Je comprends, mais il y apparement une différence de fonctionnement que tu n'a pas saisies entre gouraud et phong.
 
L'augmentation de poly peut-être une solution pour gouraud pour des surface lisse, une sphère par exemple (exemple classique). mais pour des surface en relief, la faible précision qu'offre les calcul de gouraud n'est pas suffisante pour faire du BM.
 
La raison essentielle :
 
Une fois que t'as fait la moyenne des normales, gouraud considère que la direction de l'aclairage est constante sur le poly a shader. Si t'applique ça sur du BM t'es mort, parceque la direction varie en permanence.
 
Ensuite, la meilleure précision qu'on peut obtenir avec le BM c'est d'utiliser une normal map (bum map décrite qu'avec des normal). A partir de la tu peux faire des tas de calcul vectoriel avec des élcairages.
 
en fait on verra bien. apparement Doom3 utilisera un BM de type Dot product qui normalement est associé a du phong.  
 
Maintenant si tu trouve une méthode pour faire du BM, je ne parle pas de surface bien gentilles, bien lisses, avec du gouraud, alors c'est cool :)

Reply

Marsh Posté le 29-05-2002 à 01:19:51    

Par contre fo savoir que Doom3, même si Carmack prêche le tout OpenGL (mais fo pas rêver l'algorithmie est loin d'être baclée), il y a quand même un pan majeur du moteur qui est complètement dépendant du CPU: La génération des volumes d'ombres.
 
Actuellement il n'y a pas de support Vertex Shader ou autre pour faciliement et efficacement déterminer les arrêtes de volumes, arrêtes à partir desquelles on détermine les zones d'ombres...
 
(Enfin comme d'hab il y en a certainement un max qui est précalulée, ou rafraichie à une fréquence limitée, comme les Cube Maps des jeux...)
 
Tiens d'ailleurs Wave, par voie CPU, comment tu fais pour du Cube-Mapping ? Là je crois que c'est cas chiant.

Reply

Marsh Posté le 29-05-2002 à 01:22:55    

Citation :

[nom]wave a écrit[/nom]non!
le SSE sur P3/athlon XP est le même.
sur P4 aussi, rien à voir avec SSE2 qui fait de la double précision.


 
Exact mais sur Athlon, Duron ? On retombe sur le même problème : le chaos général dans lequel évolue le monde PC avec ses normes différentes qui ne sont finalement adoptées qu'au moment où elles ne sont plus utiles.
Et puis ne crois pas que Carmack qui est toujours à la recherche de nouveaux moyens d'optimise son code n'a pas expérimenté le SSE :
 

Citation :

John Carmack, Lead Programmer, id Software on Quake 3: Arena  
 
 
Most of the Katmai optimizations [for Quake 3] are in the OpenGL drivers. We may have some loops in the main code Katmai optimized, but it is a low priority. Because up to 75% of the execution time of the game is in the graphics driver, most of the burden of optimization is theirs. I know that Intel is working with ATI and Katmai on their drivers.  
In theory, Katmai provides 4x the single precision floating point performance, but you would never see that on a real algorithm, let alone a full system level benchmark.  
 
I believe that the driver guys are getting about a 25% total speedup with Katmai optimizations. Combined with the clock rate boost, that is a significant win.  


 

Citation :

oui, c'est pour ça qu'on utilise la carte pour tracer les polygones, opération qui demande beaucoup de bande passante et beaucoup de registres, bref pas adaptée à nos cpu.
pour les calculs T&L il en est autrement: moins de bande passante, + d'opérations complexes auquelles SSE est parfaitement adapté.
En parlant de bande passante AGP, bizzarement les voodoo sans T&L n'avaient aucun problème de ce côté-là.


 
Oui mais une fois que tes vertex sont transformés par le CPU il faut bien les renvoyer au processeur graphique via le bus AGP ? Sans compter qu'à chaque nouvelle passe (même si c'est moins fréquent désormais grâce aux loopbacks) tu dois retransformer les mêmes vertex et les rebalancer via le bus AGP. Les Voodoo n'avaient pas de problème car les jeux de l'époque (et les jeux actuels) étaient ridiculement faibles en polygones dés que tu commences à compter en millions de poly/s la bande passante devient un facteur primordial et vu les performances de l'AGP....
 

Citation :

unreal sature à 100FPS (c'est pas grave), si on y met une grosse carte vidéo.  
mais l'évolution de nos machine ne se limite pas à la carte vidéo, les cpu progressent autant.


 
Oui les processeurs évoluent mais certaines choses n'évoluent pas notamment la pénalité lors des accés mémoire et la baned passante de cette dernière. Et puis entre une GF (15MVertices/s théoriques et une GF4 110MVertices/s) on trouve un rapport de 7 je ne suis pas sûr que les CPU d'aujourd'hui soit capables de traiter 7 fois plus de vertices que ceux de l'époque de la GF (Athlon 600 si ma mémoire est bonne).
 

Citation :

c'est pas mortel non plus pour un cpu comme opération. Par contre un éclairage spéculaire prend du temps à une gf1.
et puis le cpu peut calculer PENDANT que la gpu trace un polygone.


 
le moteur T&L calcule aussi pendant que les polys sont tracés tout est entièrement pipeliné dans le GPU.


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique
Reply

Marsh Posté le 29-05-2002 à 01:24:54    

Citation :

Je comprends, mais il y apparement une différence de fonctionnement que tu n'a pas saisies entre gouraud et phong.
 
L'augmentation de poly peut-être une solution pour gouraud pour des surface lisse, une sphère par exemple (exemple classique). mais pour des surface en relief, la faible précision qu'offre les calcul de gouraud n'est pas suffisante pour faire du BM.
 
La raison essentielle :
 
Une fois que t'as fait la moyenne des normales, gouraud considère que la direction de l'aclairage est constante sur le poly a shader. Si t'applique ça sur du BM t'es mort, parceque la direction varie en permanence.
 
Ensuite, la meilleure précision qu'on peut obtenir avec le BM c'est d'utiliser une normal map (bum map décrite qu'avec des normal). A partir de la tu peux faire des tas de calcul vectoriel avec des élcairages.
 
en fait on verra bien. apparement Doom3 utilisera un BM de type Dot product qui normalement est associé a du phong.  
 
Maintenant si tu trouve une méthode pour faire du BM, je ne parle pas de surface bien gentilles, bien lisses, avec du gouraud, alors c'est cool  


j'avoue que ça reste une question à creuser (y'a pas de miracles, on peut trouver des inconvénients à ma méthode).
Faudra jongler entre augmenter fortement le nombre de polygones (mais bon ça risque d'arriver avec toutes les méthodes, vu la puissance de calcul qui grimpe), et les méthodes de bump associables au gouraud (moins maitrisables pour l'éclairage spéculaire). Pour l'instant y'a pas trop de phong dans les jeux, on verra aussi comment ça évolue.
en fait je vois mal une carte qui fait du phong sur tous les polygones avec plusieurs lumières avant un certain nombre d'années.

 

[jfdsdjhfuetppo]--Message édité par wave le 29-05-2002 à 01:26:27--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 01:28:33    

wave a écrit a écrit :

Citation :

par contre pour le SSE je suis pas d'accord, le jeu d'instruction est supporté par tous les CPUs, mais chaque CPU a un flux d'instruction optimal qui lui est propre.
C'est comme le MMX, tu peux cibler différents CPUs.


mouais en général les différences de vitesse sont assez faibles entre un code générique à peu près adapté à tous les cpu et un code spécifique à un seul cpu. Mais bon on verra ce que ça donne.  




 
Là je suis ceptique quand même :(
 
On voit bien ce que ça a donné sur l'évolution 486/Cyrix/Pentium/PentiumPro/Athlon/P4.
 
Un code idéal pour un CPU en est loin de l'être pour un autre...
 
Le seul cas "propre" était le passage du 486 au Pentium, ou l'on pouvais optimiser pour le Pentium au niveau entier sans trop pénaliser le 486...
 
Mais tu prends par exemple un match Athlon/P4....
 
Si tu fais des routines ciblés Athlon, les gars qui ont des P4 hurlent...
Et inversement si tu fais des routines optimisées P4, les gars qui ont des Athlons crient au scandale (intel vendu, tout comme on a entendu 3dmark2001 vendu à nvidia)
 
C'est comme le Cyrix P166+ qui d'après PC Achat allait aussi vite qu'un Pentium Pro 150 sous Word, ce qui était vrai, mais ce qui était aussi vrai c'était que  sous Quake 1 ou un soft de calcul maths dont le flux d'instruction FPU était un peu optimisén, un PPro 200 alais 2x-3x plus vite qu'un Pentium 166 qui laminais le Cyrix....
 
C'est un peu ça le problème de l'approche CPU, alors que dans le cas de la 3D, tu peux facilement extraire des primitives rentables à cabler, et dans le cas de code asm comme les Vertexs/Pixels Shaders, le driver embarque un compilateur optimiseur ciblé pour le matos du fabricant...

Reply

Marsh Posté le 29-05-2002 à 01:31:12    

prenons un exemple :)
 
http://www.ati.com/developer/images/tkfurlg.jpg
 
tu peux charger la démo ici  
 
http://www.ati.com/developer/indexsc.html
 
Une équipe allemande du Max planck institut fait la même chose avec une GF2 (ils l'ont fait avant d'ailleurs), mais il propose une méthode software du DM pour implantation en hardware.
 
PDF ici
 
http://www.mpi-sb.mpg.de/~jnkautz/ [...] ntGI01.pdf
 
 
Franchement sans DM est faire les calcul essentiellement en CPU je vois pas comment c'est possible :)

 

[jfdsdjhfuetppo]--Message édité par barbarella le 29-05-2002 à 01:32:22--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 29-05-2002 à 01:32:17    

Citation :

Oui mais une fois que tes vertex sont transformés par le CPU il faut bien les renvoyer au processeur graphique via le bus AGP ? Sans compter qu'à chaque nouvelle passe (même si c'est moins fréquent désormais grâce aux loopbacks) tu dois retransformer les mêmes vertex et les rebalancer via le bus AGP. Les Voodoo n'avaient pas de problème car les jeux de l'époque (et les jeux actuels) étaient ridiculement faibles en polygones dés que tu commences à compter en millions de poly/s la bande passante devient un facteur primordial et vu les performances de l'AGP....


je parlais d'une comparaison voodoo5/gf1 ou 2 sur le même jeu.
La voodoo5 se contente d'un bus PCI sans ralentir.
en fait le cpu va calculer les coordonnées/couleur d'UN point pendant que la carte va tracer un polygone de 10*10 pixels avec plusieurs couches de texture. Alors heureusement que la mémoire vidéo va + vite!
 

Citation :

Oui les processeurs évoluent mais certaines choses n'évoluent pas notamment la pénalité lors des accés mémoire et la baned passante de cette dernière. Et puis entre une GF (15MVertices/s théoriques et une GF4 110MVertices/s) on trouve un rapport de 7 je ne suis pas sûr que les CPU d'aujourd'hui soit capables de traiter 7 fois plus de vertices que ceux de l'époque de la GF (Athlon 600 si ma mémoire est bonne).  


ce facteur 7 n'est surement pas vérifié en faisant la même quantité de calculs sur chaque polygone. Il suffit de regarder le nombre de transistors et la fréquence des gf1 et gf4.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed