Toujours uniquement utilisable pour ceux ayant une CG nVidia ?
Bien sûr que non. Seuls quelques modules comme les cloth ou les particules bénéficient d'une accélération hardware via CUDA (et donc, pour le coup, en effet, ça n'est accéléré que sur les cartes nVidia).
Le reste (rigid bodies, character controllers, vehicles, etc) tourne sur le CPU, et sur de nombreuses plateformes. (Xbox/PS3/Mac/Linux/Android/etc). Difficile de dire que ça ne tourne que sur des cartes nVidia sur ces machines
La réponse sera courte : tous ces jeux sont faits avec l'UDK/UE3 -> qui utilise Physx -> Mais ne fonctionne que si on utilise une CG nVidia
Je ne comprends pas comment on peut écrire ça. L'UE3 est utilisé dans de nombreux jeux Xbox/PS3, avec PhysX en effet. Ca marche très bien sans carte nVidia...
Nvidia à racheté la boîte qui développait PhysX et a modifié le code pour qu'il ne puisse plus tourner correctement que sur des GPU... nVidia je vous l'donne en mille. Bref.
Je m'excuse mais ce sont de grosses conneries
La politique de nVidia n'a
jamais été de brider le moteur sur d'autres systèmes. Bien au contraire, dès le début le but explicite a été d'optimiser le moteur CPU autant que possible, pour éviter de refaire les mêmes erreurs qu'Ageia.
Batman (et tous les jeux utilisant l'UE3/UDK) n'utilise pas PhysX si on tourne sur AMD.
C'est faux. Certains effets GPU (particules et autres) sont désactivés, mais tout le reste continue de touner sur CPU. En particulier tout ce qui concerne les collisions, raycasts, sweep tests, etc.
Le code GPU de PhysX n'est que la partie visible de l'iceberg...
Ce qui est vrai, que que UE3 contient en effet l'ancien code de EPIC, qui s'occupait des collisions et autres avant de passer à PhysX. Mais il n'y a pas de mystère ou de scandale là dedans: ils modifient leur code petit à petit, pour migrer progressivement de l'ancien système au nouveau. Par exemple à l'heure actuelle ils utilisent toujours leur ancien code de "character controller" (au lieu d'utiliser celui de PhysX) mais tous les "sweep tests" sur lesquels il se base sont maintenant effectués par PhysX - au CPU, par ailleurs.
Et il il y deux raisons très simples pour justifier ce changement:
- maintenir et optimiser un moteur physique prend du temps. Laisser un "middleware" faire le boulot pour vous à du sens....
- le code de PhysX est en général plus rapide que le leur (même au CPU).
Une fois encore, pas de grand mystère ou scandale ici...
Hum, un peu limité comme utilisation, tu ne trouves pas ? Dans ce cas, autant utiliser Havok par exemple.
Oui, si on ignore la partie GPU, PhysX est un concurrent direct de Havok (ou Bullet). Et en effet, tu peux utiliser Havok pour la partie rigid bodies, c'est une excellente lib. La grosse différence, c'est que Havok est assez coûteux, alors que PhysX est plus ou moins gratuit.....
Il y a bien entendu aussi des différences au niveau utilisation mémoire et performances. Mais contrairement à ce que beaucoup prétendent, PhysX n'est pas "plus lent", loin de là. Les deux librairies sont en gros équivalentes, et supérieures à Bullet niveau perf.
Les algos de physique sont nettement plus compliqués que le calcul du tracé d'un triangle, je me demande comment ils arrivent à faire rentrer tout ça dans une simple puce.
Pas besoin de faire rentrer quoi que ce soit dans une puce. Il suffit d'implémenter les algos avec CUDA (ou OpenCL).
- Pierre (ex NovodeX, maintenant chez nVidia, bossant sur PhysX toute la journée)
1 |
0 |