La modélisation des cheveux passera-t-elle bientôt par de l’apprentissage profond ?

Les technologies de rendu de cheveux pour les jeux vidéo ne manquent pas. Par exemple, NVIDIA dispose de HairWorks, AMD de TressFX. Cependant, ces bibliothèques ont un énorme désavantage : le temps de calcul requis pour la simulation physique. En effet, une chevelure est constituée de millions de cheveux qui se déplacent plus ou moins indépendamment les uns des autres. Conséquence ? Dans des jeux comme The Witcher 3, activer le rendu des cheveux fait chuter significativement la performance.

Des chercheurs de l’USC, Pinscreen et Microsoft ont alors pensé à utiliser de l’apprentissage profond pour remplacer ces simulations physiques. Malgré un temps d’apprentissage extrêmement long, cette technique promet d’atteindre une très bonne performance en inférence, c’est-à-dire lors de l’utilisation du réseau neuronal pour effectuer la simulation physique. Sur du matériel actuel très haut de gamme (une carte NVIDIA Titan Xp), cette inférence ne prend que quelques millisecondes pour des dizaines de milliers de cheveux, avec moins de cent mégaoctets occupés en mémoire. La simulation n’empiète donc pas énormément sur la puissance de calcul disponible pour le rendu, même si les cœurs tensoriels des puces Volta pourraient être mis à contribution.

Plus techniquement, le réseau neuronal profond apprend à partir d’images 2D une correspondance envers un rendu en 3D des cheveux. Son architecture fait largement appel à des couches convolutionnelles (convolution, pooling, déconvolution). Le réseau transforme d’abord l’image 2D en un champ vectoriel d’orientation des cheveux ; ensuite, il génère des cheveux (représentés comme des séquences de points 3D) ; finalement, il reconstruit un rendu en augmentant le niveau de détail à partir des cheveux générés. Cette méthode permet de préserver énormément de détails locaux, ce qui donne une apparence relativement naturelle au rendu (notamment les cheveux crollés).

Le jeu de données utilisé comprend quarante mille styles différents de coiffure (et donc de comportement des cheveux), pour cent soixante mille images prises avec des points de vue aléatoires. Cependant, il tend à mal généraliser : certains types de coiffure n’ont pas un rendu très réaliste (surtout les plus exotiques : cheveux crépus, africains, très courts) — il faudrait probablement encore agrandir le jeu de données pour résoudre ce problème (ou utiliser plusieurs réseaux neuronaux plus spécialisés).

Cette recherche n’est pas directement applicable dans des jeux vidéo, l’entrée du modèle restant une image. Reste à voir comment la simulation à base de réseaux neuronaux pourra prendre en compte tous les effets : pas seulement une tête qui tourne, mais aussi le vent dans les cheveux ou encore un tissu…

Sources : Nvidia GPUs could use AI to power next-gen HairWorks models in future games, AI Can Render 3D Hair in Real Time.

Voir aussi : Single-View Hair Reconstruction using Convolutional Neural Networks.

Advertisements

Amazon Lumberyard en pleine transition vers Qt

Amazon s’est lancé, en 2015, dans son propre moteur de jeu, Lumberyard, dérivé de CryEngine. Les objectifs étaient de fournir une meilleure intégration avec le service infonuagique d’Amazon, AWS (Amazon Web services), ainsi que le service de diffusion vidéo en direct pour les jeux vidéo Twitch (un autre produit Amazon). En réalité, Lumberyard est intégré aux équipes d’AWS. Contrairement aux autres moteurs de jeu AAA, Lumberyard est entièrement gratuit, sans condition.

Les moteurs de jeu ont évolué depuis les débuts du jeu vidéo : depuis des codes adaptables pour réaliser un jeu très similaire à des bibliothèques de fonction communes à un certain nombre de jeux, les moteurs actuels sont de véritables environnements de développement intégrés. Ils permettent ainsi de créer un nouveau jeu sans trop d’investissement.

Les prochaines évolutions des moteurs de jeu seront probablement au niveau des éditeurs offerts aux développeurs et graphistes impliqués dans un jeu, pour encore faciliter la création de nouveaux jeux. Unreal Engine a déjà lancé la révolution au niveau des interfaces graphiques, avec l’intégration de la réalité virtuelle pour la conception de niveaux.

Amazon suit cette voie, en réécrivant ses éditeurs avec Qt. La majorité de ces nouveaux éditeurs est conçue avec l’utilisabilité en tête. Par exemple, EMotion FX permet d’animer des personnages à l’aide d’un système à base de nœuds. Il permet la création de machines d’état hiérarchiques, de mélanger plusieurs telles machines, le tout dans une interface qui ne nécessite pas de long apprentissage ou le développement de composants supplémentaires.

Script Canvas est un autre nouvel éditeur. Il se focalise sur la programmation de scripts de manière graphique (comme Scratch). Il exploite aussi une interface à base de nœuds et est prévu pour s’intégrer avec EMotion FX. Grâce à lui, les concepteurs de jeu (sans véritable compétence en programmation) peuvent imaginer se passer d’un langage de script ou de programmation pour toute une série de tâches.

Ces développements (pas encore finalisés) et ceux à venir viendront probablement continuer à faciliter le développement de jeux complets sans besoin de spécialistes, notamment en programmation. Pour sa facilité d’utilisation, les développeurs de Lumberyard se focalisent sur Qt pour toutes ces nouvelles fonctionnalités.

Télécharger Amazon Lumberyard.

Les prochaines versions de PhysX se concentreront sur la précision de la simulation

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 ratio de masse peu réalistes, etc.). Ces améliorations se verront notamment pour les ratio 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 robotiuqe. É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.

DirectX passe à l’ère du lancer de rayons

Presque tous les jeux sous Windows utilisent DirectX pour leur rendu. Cette technologie de Microsoft fournit une certaine couche d’abstraction des cartes graphiques et facilite l’utilisation de leurs fonctionnalités avancées. Après la version 11, sortie en 2009 avec Windows Vista, DirectX semblait quelque peu stagner : peu d’évolutions, alors que les cartes graphiques ont continué à se perfectionner. Six ans plus tard, avec Windows 10, Microsoft a annoncé DirectX 12, une toute nouvelle génération : l’API cherche plus à exposer directement le matériel qu’à fournir une couche d’abstraction (la différence entre ces deux versions est très similaire à celle entre OpenGL et Vulkan).

Malgré ces améliorations techniques, le rendu en lui-même des jeux n’a pas beaucoup changé depuis le début de la 3D sur ordinateur : il se base toujours sur le principe de la matricialisation de l’image (rasterisation). Les objets en 3D sont projetés sur un plan, celui de la caméra, ce qui forme l’image à afficher. Cette opération s’effectue par un produit matriciel, pour lequel les cartes graphiques fournissent une excellente performance. Avec les années et la puissance de calcul, divers effets ont pu être implémentés par-dessus à l’aide de diverses sortes de nuanceurs (shaders) : appliqués par pixel (pixel ou fragment shader), par polygone (geometry shader) ou par sommet (vertex shader), ils peuvent influencer considérablement le rendu et l’amener à un très haut niveau de photoréalisme.

Depuis le début, une autre technique de rendu est annoncée : le lancer de rayons (ray tracing). Le principe en est totalement différent : il s’agit de simuler l’entièreté du trajet des rayons de lumière (d’où le nom), entre le moment où ils sont émis par une lumière jusqu’à l’instant où ils franchissent le plan de la caméra, en étant notamment réfléchis sur tout objet se trouvant sur le chemin. Évidemment, le réalisme d’un tel rendu est bien meilleur que par matricialisation, mais demande une puissance de calcul phénoménale — pour afficher ne fût-ce qu’une image, il peut falloir plusieurs heures. C’est la raison pour laquelle les films 3D utilisent le lancer de rayons, sur une batterie d’ordinateurs puissants, depuis plus d’une dizaine d’années (par exemple, Renderman, le moteur de rendu utilisé par le célèbre studio d’animation Pixar, est passé d’un rendu par matricialisation dans les années 1980 à un rendu uniquement par lancer de rayons en 2016).

Au niveau matériel, Imagination Technologies avait déjà proposé des cartes graphiques avec une accélération particulière du lancer de rayons, mais avec un succès assez mitigé à l’époque (c’était en 2016).

DirectX Raytracing

Avec des cartes graphiques de plus en plus puissantes, le rêve d’utiliser le lancer de rayon pour l’entièreté de scènes interactives (où les images doivent être prêtes en une fraction de seconde, car l’utilisateur interagit sans cesse avec l’application — déplacer la caméra, un objet, etc.) persiste depuis des décennies… et pourrait très bientôt devenir réalité ! En effet, la nouveauté principale annoncée cette année par Microsoft lors de la Game developer conference est DXR, l’acronyme de DirectX Raytracing. Il s’agit d’une interface pour réaliser un rendu en temps réel par lancer de rayons. Celle-ci a déjà permis de réaliser un certain nombre de démonstrations technologiques.

L’effet sur le rendu est bluffant, surtout quand on le compare à un rendu plus traditionnel. Le lancer de rayons permet ainsi d’afficher des réflexions très précises  d’objets qui n’existent pas dans la vue de la caméra.

Les réflexions montrées sont entièrement correctes d’un point de vue physique, peu importe la surface considérée.

De manière générale, toute la scène profite de ce regain de réalisme.

Techniquement, toute la scène n’est pas encore affichée par lancer de rayons — la puissance de calcul n’est pas encore disponible. DirectX Raytracing fonctionne en spécifiant une certaine zone qui doit être affichée par lancer de rayons (souvent bien plus petite que l’écran au complet), par exemple les objets dont la surface est réfléchissante. Le rendu est configuré par un nouveau type de nuanceurs, appliqués pour chaque objet dans la scène, pour indiquer les cas d’intersection entre un rayon et une surface (sans oublier les cas où le rayon rebondit sur plusieurs surfaces).

Par ailleurs, Microsoft est déjà prêt au niveau de l’outillage : son débogueur PIX gère nativement l’entièreté des nouvelles fonctionnalités apportées par DirectX Raytracing, bien que de manière expérimentale. Il suffit simplement de mettre à jour sa version de Windows 10 (pour bénéficier de la mise à jour de DirectX, uniquement disponible à ceux en mode fast ring pour le moment), puis d’installer la dernière version de PIX.

Côté implémentation

Comme pour le reste de DirectX, Microsoft fournit surtout une interface à respecter, une bonne partie du travail doit être faite par les fabricants des cartes graphiques à travers leurs pilotes. La performance dépendra donc fortement de ces implémentations et du matériel disponible. Néanmoins, une implémentation utilisant DirectCompute sera disponible et utilisée chaque fois qu’une implémentation plus spécifique n’est pas disponible — de telle sorte que toute carte graphique compatible DirectX 12 pourra utiliser ce module. Ce mode de fonctionnement pourrait se répéter à l’avenir : selon Microsoft, le futur des cartes graphiques ne se situe pas au niveau d’un matériel spécifique pour des fonctions fixes, mais bien d’opérations flexibles et généralistes.

D’un côté, AMD ne se mouille pas trop : un pilote sera disponible dans le futur, mais la compagnie semble se focaliser sur ses solutions pour le lancer de rayons. Ainsi, le moteur de rendu maison Radeon ProRender pourra utiliser ce lancer de rayons en temps réel ; il n’est pas vraiment prévu pour du jeu vidéo, mais plutôt des applications professionnelles. AMD travaille également depuis des mois sur Radeon Rays, une bibliothèque de lancer de rayons pouvant exploiter OpenCL, Vulkan ou encore Embree pour l’accélération matérielle (GPU pour OpenCL et Vulkan, CPU pour OpenCL et Embree), aussi prévu pour des jeux vidéo.

NVIDIA semble avoir une longueur d’avance

D’un autre côté, NVIDIA travaille depuis très longtemps sur le sujet du lancer de rayon, avec par exemple son moteur OptiX dès 2009 ; la société a également racheté Mental Ray en 2007, devenu depuis lors Iray, un moteur de rendu utilisé dans des applications professionnelles comme la conception par ordinateur (AutoCAD, CATIA, SolidWorks, etc.) ou l’animation (3D Studio Max, Cinema 4D, Maya, Houdini…).

Spécifiquement pour DirectX Raytracing, NVIDIA ne parle que de son implémentation RTX : une API spécifique sera disponible, mais RTX sera aussi utilisé derrière DirectX Raytracing. Élément intéressant : RTX fonctionnera particulièrement bien sur les GPU de génération Volta ou plus récente ; pour les joueurs, cela signifie uniquement la Titan V (ou les prochains GPU dont on attend l’annonce depuis longtemps). On peut s’attendre à ce que les nouveaux cœurs tensoriels soient mis à l’épreuve pour ce lancer de rayons.

Dernier détail : RTX sera disponible dès la prochaine version des pilotes NVIDIA, la 396. Elle arrivera début avril pour le grand public.

Et les jeux, donc ?

Plusieurs studios de développement de jeux étaient associés à l’annonce de DirectX Raytracing. Notamment, Unreal Engine intègre déjà cette technologie dans certaines versions de développement, tout comme Unity. Des développeurs comme Epic Games, DICE et Electronic Arts ont déjà annoncé qu’ils intégreront DirectX Raytracing dans leurs moteurs et leurs jeux. On pourrait déjà voir des effets utilisant ces nouvelles possibilités dans des jeux cette année.

En manque de détails techniques ?

Téléchargement : SDK DXR, PIX.

Sources et images : Futuremark Demonstrates Raytracing Demo with DirectX 12, Random Thoughts on Raytracing, AMD Announces Real-time Ray Tracing Support for ProRender and Radeon GPU Profiler 1.2, Expanding DirectX 12: Microsoft Announces DirectX Raytracing, Announcing Microsoft DirectX Raytracing!, NVIDIA Announces RTX Technology: Real Time Ray Tracing Acceleration for Volta GPUs and Later, Nvidia talks ray tracing and Volta hardware.

Sortie de NVIDIA FleX 1.2

FleX est le moteur de simulation physique unifié de NVIDIA. Celui-ci gère aussi bien les simulations physiques classiques (avec des objets solides) que les tissus ou les fluides, le tout avec un paradigme unifié à base de particules. Cette caractéristique lui permet d’effectuer des optimisations très puissantes, avec notamment une exécution très rapide sur GPU. En pratique, il a déjà utilisé dans Fallout 4, avec l’avantage que FleX peut s’intégrer avec n’importe quel autre moteur physique : il peut prendre n’importe quel sous-ensemble de la simulation en charge. Les calculs peuvent être exécutés sur CPU ou GPU, avec l’API propriétaire de NVIDIA CUDA ou bien avec Direct Compute.

La version 1.2 de ce moteur vient de sortir, avec quelques améliorations appréciables. Notamment, la compatibilité avec Linux a été l’objet d’un certain travail : toutes les dépendances inutiles ont été éliminées, en préférant travailler directement avec les API de ce système (plus besoin de GLUT ou de GLEW, donc). Aussi, les collisions sont mieux gérées, avec une meilleure interpolation entre formes lors des calculs.

Bon nombre de fonctions ont été ajoutées, notamment pour gérer les jointures souples (dynamiques), le filtrage des collisions, les déformations plastiques ou encore pour récupérer des informations sur les particules voisines. Au niveau des optimisations, les options de désactivation de certaines fonctionnalités sont bien plus avancées : au lieu de se limiter à la désactivation de la partie fluide, le moteur peut être configuré bien plus finement.

Voir aussi : le code source de FleX (enregistrement gratuit requis).

Source : NVIDIA FleX 1.2.0 is released.

Intel préparerait son GPU dédié

Intel tente depuis longtemps de se créer une place sur le marché fort lucratif des processeurs graphiques — de plus en plus lucratif, d’ailleurs, depuis l’explosion de l’apprentissage profond et des cryptomonnaies. La première tentative date de 1998, avec la 740, une carte graphique AGP à la performance décevante ; les évolutions successives sous la marque Extreme Graphics n’étaient pas mieux reçues. En 2006, Intel tente de percer avec son architecture Larrabee : au lieu d’utiliser des cœurs de calcul extrêmement nombreux (plusieurs centaines, voire milliers) et spécifiques, l’idée était d’utiliser un grand nombre de cœurs (plusieurs dizaines) totalement indépendants ; l’idée a fait un flop comme carte graphique, mais est réapparue sous la forme de la ligne de produits Xeon Phi. Les premiers composants graphiques véritablement utiles sont apparus en 2010, avec l’intégration aux processeurs Core, sous les marques HD Graphics, puis Iris Pro/Plus Graphics et UHD Graphics.

Cependant, la firme de Santa Clara a récemment recruté Raja Koduri, un gros contributeur au renouveau d’AMD du côté des cartes graphiques. De plus, certains processeurs viennent avec une carte Radeon, sous licence d’AMD. Ces quelques éléments semblent indiquer qu’Intel est de plus en plus sérieux au niveau de la puissance des cartes graphiques.

Il semblerait que les douzième et treizième générations de processeurs graphiques portent les noms de code Arctic Sound et Jupyter Sound. Ces deux puces seraient entièrement développées par Intel et reliées au processeur central par un lien EMIB (les deux seraient disposées dans le même boitier). On s’attend à les voir vers 2020, mais un retard n’est pas à exclure.

Source : Arctic & Jupiter Sound: Intel bestätigt die Entwicklung von eigenständigen GPUs unter Raja Koduri.

Samsung annonce une mémoire HBM2 avec un débit de 2,4 Gb/s par pin

Le CES est l’occasion rêvée par bon nombre de constructeurs d’annoncer leurs nouveaux produits de haute technologie. Samsung a ainsi annoncé Aquabolt, sa nouvelle puce de mémoire HBM2. En quelques mots comme en cent, cette nouvelle génération est bien plus rapide que la précédente, avec un débit maximum de 2,4 Gb/s par pin et huit banques de mémoire empilées par puce. Avec cette technologie, il sera donc possible de proposer des cartes graphiques avec trente-deux gigaoctets de mémoire et une bande passante de 1,2 To/s dans le tout haut de gamme (avec quatre puces de HBM2, donc).

L’autre amélioration concerne la consommation d’énergie : ces puces fonctionnent avec une tension de 1,2 V. La génération précédente fonctionnait soit à 1,2 V (et un débit de 1,6 Gb/s et par pin), soit à 1,35 V (à 2 Gb/s). La consommation énergétique pourrait ainsi baisser de cinquante pour cent par rapport à la génération précédente.

Ces améliorations sont dues à la conception de la connexion entre les différents étages de la puce (TSV, through-silicon via) : on compte en effet pas loin de cinq mille de ces liens. Le contrôle de la dissipation de chaleur a aussi été amélioré.

Reste à voir si toute cette puissance sera réellement utilisable : même si la génération précédente pouvait fonctionner à 2 Gb/s, AMD la configurait pour n’utiliser que 1,9 Gb/s et NVIDIA… 1,75 Gb/s.

À la concurrence, SK Hynix lance aussi sa mémoire avec les mêmes spécifications, tant en termes de débit que de tension de fonctionnement.

Sources : Samsung Unleashes Fastest Ever HBM2 ‘Aquabolt’ Capable Of Achieving 2.4 Gbps On 1.2v, Increasing Performance Per Watt By 50%, SK Hynix va aussi lancer une HBM à 2.4 Gbps.