PhysX/Gameworks et Unreal Engine 4

Unreal Engine 4 intègre la dernière version du moteur physique PhysX, développé par NVIDIA. mais qu’en est-il de Gameworks ?

017C000007256530-photo-nvidia-gameworks-logoDerrière “Gameworks” se cache en fait toute une batterie de technologies développées en interne chez nVidia, ou acquises lors du rachat de sociétés tierces.


L’offre se divise grossièrement en trois catégories :

  • la qualité de l’image (VisualFX ): se concentre sur les procédés traitant par exemple l’antialiasing (TXAA), le rendu des ombres (Soft Shadows) mais aussi le rendu des visages (FaceWorks) ou encore de la pilosité/fourrure (FurWorks).
  • la simulation de la physique : s’articule autour de la technologie PhysX (APEX) et se concentre principalement sur le rendu des moteurs de destruction, des textiles et des fluides, le rendu des cheveux (HairWorks).
  • les outils :  solutions destinées aux développeurs, leur permettant d’intégrer tout cela dans les moteurs de leurs jeux et aussi d’accéder à des fonctions plus avancées

L’une des technologies  permettant d’exploiter les GPU pour la simulation multiphysique en temps réel, avec des couplages entre tous les types de simulation (des interactions entre solides (déformables ou non), liquides et tissus, chaque type d’objet étant régi par des systèmes d’équations différents) se nomme NVIDIA FleX.

Les sources de l’intégration de GameWorks sont disponibles sur un dépôt Git, accessible sous les mêmes conditions que les sources d’Unreal Engine 4. Toutefois, il s’agit pour l’instant d’Apex essentiellement.

D’autres modules de GameWorks sont en cours d’intégration : HBAO+, VXGI, Vehicles et WaveWorks sont d’ores et déjà disponibles, toujours en tant qu’intégrations expérimentales, toujours uniquement pour Windows. Il est prévu d’ajouter d’autres modules dans les mois à venir, comme HairWorks ou Turf Effects. Certains modules ont besoin d’un GPU NVIDIA, d’autres se satisfont d’un GPU DirectX 11.

nvidia_gameworks_092014Si comme moi vous avez un compte développeur Nvidia (sinon, c’est simple, allez vous créer un compte, c’est gratuit – même si c’est pas systématique), vous pouvez accéder à de nombreux exemples et leur code source en allant à cette adresse.

GameWorks n’est ni plus ni moins qu’une boîte noire sur laquelle le développeur du jeu n’a aucun contrôle puisqu’il ne connait pas le code qu’elle renferme (on a juste accès aux DLL). Plus précisément, “Le code source de GameWorks est fourni aux développeurs via un accord de licence. Il ne peut pas être distribué à des tiers sans licence.” – Je n’ai pas essayé de leur demander un accès, mais à mon avis, il faut montrer patte blanche, et ça ne doit vraiment pas être facile à obtenir.

Personnellement, ça ne me botte pas trop. Je ne sais pas si cela vaut la peine de mettre le nez dans cette technologie qui évolue très vite et dont le marketing semble avoir pris les rennes: avec tous ces noms qui vont et qui viennent et qui n’existeront peut-être plus dans 6 mois…

Mais son utilisation au sein d’Unreal Engine suscite en moi un certain intérêt. Il n’est même pas besoin d’attendre qu’Unreal Supporte l’intégration définitive des différents modules pour les utiliser. Il suffit juste de créer une classe blueprint d’appel aux fonctions DLL et de mapper les principales fonctions que l’on souhaite utiliser. Pourquoi pas… ou attendre que d’autres le fasse à votre place… Tout dépend: voulez-vous suivre la masse ou faire un truc novateur avec UE4?

Voici quelques jeux dont les développeurs ont déjà répondu à cette question:

  • AC Unity : HBAO+, TXAA, PCSS et tesselation
  • Batman Arkham Knight : Turbulence, PhysX, Volumetric lights, FaceWorks e Effets de pluie
  • Borderlands The Pre-Sequel : PhysX
  • Far Cry 4: HBAO+, PCSS, TXAA, God Ray, Fur, support de la 4k
  • Project Cars : DX11 (heureusement), Turbulence, PhysX
  • The Crew: HBAO+ et TXAA
  • The Witcher 3: HairWorks, HBAO+, PhysX (fringues et destruction)
  • Warface: PhysX, Turbulence

Ces articles pourraient aussi vous intéresser …