Les prochaines versions de PhysX se concentreront sur la précision de la simulation
Les prochaines versions de PhysX se concentreront sur la précision de la simulation,
plutôt que sur la simple rapidité
PhysX est le moteur physique développé par NVIDIA. Il est utilisé dans un très grand nombre de jeux, depuis le début de son développement par NovodeX puis Ageia. L’une de ses caractéristiques principales est l’accélération matérielle, d’abord sur une carte spécifique (PPU), puis désormais sur une carte graphique (GPU).
Jusqu’à présent, le moteur s’est focalisé sur la performance de la simulation : obtenir des résultats physiquement plausibles très rapidement, en utilisant toute la puissance de calcul disponible. Ainsi, les solveurs et la gestion des contacts n’a pas beaucoup évolué ces dernières années. Cependant, cet objectif ne correspond pas à toutes les applications : le moteur est strictement inutilisable pour des simulations de robotique, car pas assez précis. Le futur des jeux semble aussi requérir une plus grande précision : pour des jeux en réalité virtuelle, un gain de précision sera le bienvenu. C’est pourquoi les prochaines versions se concentreront plus sur une fidélité de la simulation que la simple rapidité.
Du côté technique, les détails actuellement disponibles indiquent qu’un nouveau solveur sera utilisé. Il sera non linéaire et itératif, mais proposera une performance similaire au solveur actuel. Il devrait amoindrir les besoins de trucs et astuces pour rendre les simulations plus réalistes (des projections sans sens physique, des ratios de masse peu réalistes, etc.). Ces améliorations se verront notamment pour les ratios de masse élevés, pour les petits objets, pour les chaînes longues et pour les vitesses angulaires élevées. NVIDIA a d’ailleurs proposé une petite démo pour comparer les résultats de simulation avec le nouveau solveur dans le cas de chaînes longues avec un haut ratio de masses (un gros cube très lourd et une série de petites boules).
De plus, les articulations seront retravaillées : de nouveaux modèles seront ajoutés, avec une validation de la précision par rapport à des modèles analytiques (exacts), principalement pour la robotique. Également, PhysX devrait voir venir un nouveau solveur de dynamique inverse (par exemple, en robotique, pour une position donnée d’un bras du robot, il s’agit de calculer l’angle à donner à chaque articulation).
Toutes ces nouveautés devraient arriver dès PhysX 3.5, même si aucune date n’est pour le moment prévue.
(Les nouvelles versions devaient arriver tous les six mois, même s’il a fallu bien plus longtemps — pas loin de deux ans — entre la 3.3 et la 3.4…).
Source : GDC 2018 : new PhysX SDK will focus on simulation accuracy.
Et vous ?
:fleche: Qu'en pensez-vous ?
:fleche: Quelles sont les améliorations que vous souhaiteriez voir ?
PhysX devient libre, PhysX 4 se focalisera sur la précision de la simulation
PhysX est le moteur physique de NVIDIA. Il a commencé son histoire comme NovodeX, en 2002, en Suède, avant d'être racheté par Ageia en 2004 : l'objectif était de fournir un accélérateur pour les calculs physiques (une carte PCI à intégrer dans son ordinateur), ce qui libère les autres processeurs lors de l'exécution d'un jeu. NVIDIA a alors racheté Ageia en 2008 : les accélérateurs physiques ont alors été remplacés par les cartes graphiques, devenues plus puissantes et plus programmables.
En 2015, NVIDIA a ouvert le code source de PhysX sur GitHub. Il fallait s'enregistrer sur le site de NVIDIA pour avoir accès au code sous une licence propriétaire. Depuis hier, ce code est vraiment libre : il est disponible sous licence BSD sans condition, toujours sur GitHub. Certes, le dépôt public n'est pas celui de développement, mais la situation s'améliore franchement d'un point de vue libriste. Les autres modules physiques de GameWorks (comme NvCloth, Blast ou Flow) ne sont pas concernés : ils restent sous une licence propriétaire, même s'il suffit de s'enregistrer pour y avoir accès. De même, le code pour les consoles (Xbox One, PS 4 et Switch) n'est pas libéré.
PhysX 4.0 sera aussi concerné par cette libération du code, lors de sa sortie (prévue le 20 décembre). Comme annoncé lors de la GDC 2018, cette version se focalise sur la précision de la simulation, de telle sorte que le moteur physique ne soit pas qu'utile dans les jeux. Dans les nouvelles fonctionnalités, on compte un nouveau solveur, TGS (temporal Gauss-Seidel), pour toutes les articulations et jointures. La robustesse de cette méthode est notamment due au fait que les contraintes sont recalculées à chaque itération. Toujours dans les jointures, l'adjonction des coordonnées réduites augmente fortement la stabilité numérique.
Au niveau de la performance, de nouvelles méthodes de filtrage ont été introduites pour la cinématique et la statique. Une nouvelle hiérarchie de volumes englobants sert à accélérer les requêtes dans les scènes qui comportent un grand nombre d'objets simulés.
NVIDIA a aussi produit une vidéo qui démontre les prouesses de cette nouvelle version, notamment en la comparant à PhysX 3.4. La scène sur le jeu d'échecs vaut le détour : on y voit un bras robotisé simulé par PhysX 4 parfaitement déplacer des pièces, tandis que celui simulé par PhysX 3.4 renverse un grand nombre de pièces, à cause du manque de stabilité de sa simulation.
Source : NVIDIA announces PhysX SDK 4.0, makes engine open-source under BSD-3 license, NVIDIA Extends PhysX for High Fidelity Simulations, Goes Open Source.
La version 4.0 de PhysX de NVIDIA est disponible en open-source
La version 4.0 de PhysX de NVIDIA est disponible en open-source
avec de nouvelles méthodes de filtrage pour la cinématique et la statique
Tôt ce mois, l’américain NVIDIA a annoncé que son Kit de développement PhysX SDK sera désormais disponible en open source (sous la licence BSD à 3 clauses), ce qui signifie que les développeurs de jeux pourront modifier et étendre le Kit de développement PhysX SDK à leur guise. Le Kit de développement logiciel NVIDIA PhysX est une solution physique multi-plateforme évolutive prenant en charge une large gamme de périphériques, des smartphones aux processeurs multicœurs et GPU haut de gamme. PhysX est déjà intégré à certains des moteurs de jeu les plus populaires, notamment Unreal Engine et Unity3D.
La société a aussi précisé que PhysX 4.0 sera aussi concerné par cette libération du code. Cette version va se focaliser sur la précision de la simulation, de telle sorte que le moteur physique ne soit pas qu'utile dans les jeux. Dans les nouvelles fonctionnalités, il y aura nouveau solveur, TGS (temporal Gauss-Seidel), pour toutes les articulations et jointures. La robustesse de cette méthode est notamment due au fait que les contraintes sont recalculées à chaque itération. PhysX 4.0 rendu disponible ce 20 décembre présente les caractéristiques ci-après :
- open source ;
- simulation multithread ;
- gestion de l'utilisation de la mémoire ;
- prise en charge de différentes unités de mesure et échelles ;
- algorithmes de détection de collision à phases multiples multiples ;
- détection de collision de formes maillées, triangulaires et primitives ;
- mise en place et mise à l'échelle du maillage ;
- détection de collision discrète et continue ;
- système de requête de scène avancé.
La note de version établie par la société montre qu’il y a un bon nombre de changements, d’ajouts et de problèmes résolus dans cette nouvelle version du kit de développement.
« Avec PhysX SDK 4.0, les articulations réduites des coordonnées et le solveur temporel de Gauss-Seidel rendent les machines, les personnages / ragdolls et tout ce qui est joint ou articulé beaucoup plus robuste. Cela permet une gravité plus élevée, des impacts plus importants, des fonctionnalités plus petites et des pas de temps plus importants », peut-on lire sur le site de l’éditeur.
Au niveau de la performance, de nouvelles méthodes de filtrage ont été introduites pour la cinématique et la statique. Une nouvelle hiérarchie de volumes englobants sert à accélérer les requêtes dans les scènes qui comportent un grand nombre d'objets simulés. Une liste des nouveautés de PhysX SDK 4.0 selon l’éditeur est la suivante :
- le solveur temporel de Gauss-Seidel (TGS), qui fabrique des machines, des personnages / ragdolls et tout ce qui est joint ou articulé beaucoup plus robuste. TGS recalcule de manière dynamique les contraintes à chaque itération, en fonction du mouvement relatif des corps ;
- la nouvelle fonctionnalité d'articulations de coordonnées réduites permet la simulation des articulations sans erreur de position relative et sans actionnement réaliste ;
- une nouvelle phase multi-large automatique ;
- une évolutivité accrue avec de nouvelles règles de filtrage pour la cinématique et la statique ;
- les requêtes de scènes centrées sur les acteurs améliorent considérablement les performances des acteurs aux formes multiples ;
- il est maintenant possible de construire le système basé sur CMake.
Sources : PhysX SDK, Note de version
Et vous ?
:fleche: Qu'en pensez-vous ?
Voir aussi
:fleche: PhysX, le moteur physique de NVIDIA devient libre, PhysX 4 se focalisera sur la précision de la simulation
:fleche: Les GeForce Volta de NVIDIA pourraient supporter la technologie RTX, la norme HDMI 2.1, la VRAM GDDR6 et un nouvel algorithme de Boost
:fleche: Nvidia publie un CA trimestriel inférieur aux attentes des analystes l'entreprise est touchée par la baisse de la demande pour les cryptomonnaies