COMPTOIR
  
register

Liquid Crystal, une démo sandbox "indie" de simulation physique rendue par voxel

Internet regorge de perles en tout genre de créateurs souvent (très) obstinés et (très) passionnés, un environnement où il n’est toutefois jamais facile de sortir la tête de l’eau. Et si l'on se penchait sur l'une d'entre elle, histoire de varier un peu ? Petite trouvaille par hasard fruit d’une navigation (silencieuse, pas comme celle de Trump) quasi journalière sur Twitter, la démo Liquid Crystal est la création d’un développeur de jeu « indie » nommé Grant Kot, activité à laquelle il s’adonne sur son temps libre en marge de son activité professionnelle d’ingénieur logiciel à New York.

 

Liquid Crystal est une première brève démonstration technique d’un jeu « bac à sable » physique en cours de développement, l’objectif étant la création d’un titre où chaque bloc est physiquement simulé et peut être interagi avec. Dans la démo, une petite portion dans un cadre fermé d’un monde fait de particules où il est possible de se déplacer/voler, y compris en hauteur, et interagir avec lesdites particules, en les tirant ou appliquant une force d’attraction (un peu comme Moïse, en fait). La démo exige un GPU compatible DirectX 11.1 — chez Nvidia tous les GPU depuis Fermi, chez AMD tous ceux depuis Evergreen. Pour l’anecdote, une création plus avancée est également en cours de gestation derrière les rideaux et qui fera cette fois-ci bon usage de DirectX 12 Ultimate — annoncé mi-mars par Microsoft. 

 

 

En matière de techniques déployées, on trouve d’abord un moteur de jeu voxel (contraction de « volume » et « élément », permet de stocker les caractéristiques physiques d’un point d’un volume sur un maillage régulier) utilisant la Material Point Method (une technique numérique utilisée pour simuler le comportement de différents matériaux/éléments) pour les simulations physiques. La totalité des effets physiques est gérée par le CPU pour réserver le GPU à d’autres tâches.

Dans le cas de la démo, la technique utilisée pour l'éclairage se rapproche un peu du voxel cone tracing de Crytek (grosso modo du ray tracing sans matos RTX) ou le voxel global illumination (VGXI) de Nvidia, certes, probablement dans une version moins avancée. Le créateur n’a pas utilisé de structure de données adaptative comme un Sparse Voxel Octree (une technique de rendu 3D utilisant du ray casting ou une autre forme de lancer de rayon dans une représentation octree) ni d’éclairage diffus, plus lourd et plus complexe à mettre en œuvre. En somme, l’objectif premier du développeur était d’abord la vitesse plutôt que la qualité du rendu, afin d’être en mesure d’apprécier les effets de réflexions/réfractions d’objets en mouvement rapides sans aucun lag.

 

On y trouve également du ray marching — ou encore ray casting et parfois aussi ray tracing volumétrique —, une technique de projection de rayon volumique pour un rendu de volume basé sur l’image, en calculant des images 2D à partir d’ensembles de données volumétriques 3D. Dans la démo, l’utilisation du ray maching permet aux rayons lumineux de se plier en cas de contact physique avec un volume, qui peut être constitué d’un ensemble d’éléments ayant des indices de réfraction différents, naturellement dans l’objectif d’obtenir un rendu et une propagation de la lumière aussi naturels que possible. Depuis la dernière mise à jour, les shaders de l’eau affichent notamment aussi des effets de Fresnel et d’absorption de lumière. 

 

 

L'auteur, Grant Kot, a aussi publié une version V4 introduisant la technique de merge instancing, d’abord pour les GPU incompatibles avec les mesh shaders (voir la démo de Nvidia avec Turing en 2018, notez que la version avec mesh shaders de Liquid Crystal n’a pas encore été publiée), mais aussi pour permettre l’utilisation d’un mesh différent pour chaque particule (avec jusqu’à 64 triangles), de quoi varier grandement les formes affichées à l’écran. L’inconvénient, c’est que cette technique est plus gourmande, car fait travailler inutilement le GPU pour effectuer des transformations géométriques qui ne seront pas visibles pour le joueur.

Inversement, les mesh shaders disposent d’une méthode de tri (le frustum culling) pour éviter justement cette perte de temps de calcul, un gain qui permet en retour d’augmenter sensiblement le niveau de détails dans l’environnement immédiat visible du joueur. Le développeur annonce pour l’instant être arrivé à 256 triangles par particules à proximité du joueur, et espère bien pouvoir aller encore plus haut.

 

Bien entendu, ceci est encore une ébauche très expérimentale préalpha sur le long chemin vers une « early access » et qui nécessite encore beaucoup de travail d’optimisation de la parole de l’auteur lui-même. Sa feuille de route comporte notamment la future version faisant usage des mesh shaders pour un meilleur niveau de détail (LOD), l’ajout des effets de températures, une optimisation de l’éclairage des objets statiques ou encore l’exploitation du calcul asynchrone (Async Compute) pour simuler l’éclairage lors de la rastérisation. Bref, si c’est votre dada habituel, par passion ou pour le travail, ou même par simple curiosité, une progression à suivre directement sur sa page YouTube et la page ci-dessous !

 

Liquid Crystal Demo pour l'essayer vous-même, et le site personnel de l’auteur.
Un poil avant ?

NvidiARM, c'est officiel !

Un peu plus tard ...

Et sinon, Mac OS X sur votre Rapberry Pi, ça vous tente ?

Les 5 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par darkpounette, le Mardi 22 Septembre 2020 à 22h18  
3 fps sous APU Ryzen 3400GE
par Reflections_Auvg-Rhon-Alp en Île-de-France, le Lundi 21 Septembre 2020 à 20h48  
Largement plus utile que le semi-raytracing.

Par contre, j'aurais préféré qu'ils fassent carrément du full voxel à l'image du jeu Outcast original plutôt qu'un semi-voxeling.

Imaginez quand même, la plus petite "unité" est un "pixel" au lieu d'un triangle. Ce qui signifie qu'un voxel peut très grossièrement être considéré comme un "atome.

Ca va relancer la phyisque à un tout autre niveau, ainsi qu'une tonne d'autres possibilités pour:
- La simulation bien plus correcte des matériaux/surfaces (poids du "pixel", grain/niveau de ponçage, grip des matériaux, etc) comme dit.
- Et mettre fin au lieu du foutu ragdoll physics de 2004 (où même de la pierre, du métal ou du bois ont le même poids )
- Mais aussi de la destructibilité et de n'importe quel élément (ex: enlever une par une les pattes d'un cafard de Half-Life 1, de la vraie eau et non des textures dégueulasse + tesselation s'y prétendant, etc) !



Ou tout simplement correctement simuler le réflexe crémastérien.
(Vous me remercierez plus tard pour avoir rendue une heure de joie enfantine et joyeuse que vous ne pensiez jamais revivre. ).
par Matthieu S., le Lundi 21 Septembre 2020 à 15h20  
par Ideal le Jeudi 17 Septembre 2020 à 00h38
Intéressant le papier... merci matthieu.
Le voxel c'est la vie vivement que ça puisse être accéléré par les GPU histoire que nos jeux en soient inondés.
par JumpIfBelow le Lundi 21 Septembre 2020 à 09h29
C'est le genre de démo que j'apprécie pleinement.(.....) Non-Euclidian Worlds Engine

par JumpIfBelow, le Lundi 21 Septembre 2020 à 09h29  
C'est le genre de démo que j'apprécie pleinement. Je ne sais pas quand la resterization montrera ses limites ou tout simplement sera inefficace avec la montée de puissance de nos GPUs, mais ce serait cool que l'on commence à avoir ce type de traitement. Bon, cela voudrait dire petit à petit revoir toute l'architecture GPU, ce n'est pas pour demain.

J'adore ce type de démo ceci dit, ça me rappelle un autre truc assez délirant d'un type qui s'amusait à faire un moteur de rendu non-euclidien. Un peu vieux ceci dit, mais pour les curieux : Non-Euclidian Worlds Engine
par Ideal, le Jeudi 17 Septembre 2020 à 00h38  
Intéressant le papier... merci matthieu.
Le voxel c'est la vie vivement que ça puisse être accéléré par les GPU histoire que nos jeux en soient inondés.
Ceci dit j'ai jamais saisi pourquoi seul le CPU peut se charger de ce genre de calcul Voxel et j'imagine qu'un jour on sera affranchi de cette limite.
Faudra peut-être des GPUs qui explorent spécifiquement de façon hardware cette voie car le Voxel a un coté organique très prononcé qui fait penser à la nature même de la matière.
Bref parfait pour la simuler

En tout cas Commanche 1992 tourne très vite en 2020 ( même trop vite c'est injouable faut activer un limiteur d'image et du coup on se tape un 30FPS caped hyper poussif hérité de l'époque ahah >>> c'est aussi injouable )