Les textures procédurales et les shaders, ou ...

Ici, on papote et on parle de tout , de rien... dans le respect des règles bien sûr ! :)
Répondre
Avatar du membre
keltwookie
Admin du site
Messages : 68
Enregistré le : mer. avr. 04, 2018 5:42 pm
Localisation : Kashyyyk
Contact :

Les textures procédurales et les shaders, ou ...

Message par keltwookie » mer. avr. 18, 2018 3:07 pm

... Comment j’ai découvert le sujet et pourquoi je m’y suis intéressé :

En cherchant un moyen de sauvegarder du temps de travail, j’ai découvert un nouveau moyen, pour moi, de gérer les textures. Dans l’ancienne méthode, J’avais à réaliser en premier une UV Map avec des coutures sur le modèle, puis coloriser ou appliquer des textures, un long procédé comme la texture appliquée ne correspondait pas toujours, heureusement , il est relativement facile de les créer et de les gérer grâce à Blender.
Mais apparemment, les moteurs de jeu les plus modernes utilise le procédural, mais qu’est ce que c’est ?

Commençons par le commencement :
J’avais des difficultés à charger des images pour concevoir une cubemap/skybox avec l’une des dernières release Alpha de Godot, quelques semaines avant la sortie officiel de la version 3.0.
J’ai donc demandé sur le Forum des développeurs Godot et voici la réponse que j’ai eu de Calinou, un des principaux développeurs du moteur.
Traduction :
Les skyboxes/cubemap ne sont plus supportées dans Godot 3, tu devras utiliser des ciels panoramiques (« Panorama Skies ») à la place, (ou des ciels procéduraux). Par conséquent, tu ne peux pas utiliser les fichiers de ressources cubemap dans Godot 3. Cela a été fait parce que les ciels panoramiques sont plus simples à implémenter dans le moteur, et sont plus populaires parmi les artistes et les développeurs actuels , plutôt que des images à faible plage dynamique comme les images JPEG...
« … (ou ciels procéduraux) ...»

La méthode consiste à utiliser des shaders à la place d’image, en le combinant, on peut créer des éclairages ou lumières, des réflexions particulières, des dégradés de couleur et même des petites formes basiques, ou plutôt des déformations, sans qu’une quelconque image soit chargée

Pour illustrer ce dont je parle, voici deux soleils que j’ai implémentés dans mon projet XPlore :
*Note: Les images pourraient être un peu longues à charger étant donné leurs résolutions dans Blender*

Alpha Centauri A : Etoile jaune – type G2 (comme notre soleil) Image
Alpha Centauri B : Naine orange – type K1- V Image
Finalement, existe t’il un gain réel pour un usage confortable, pas seulement pour le développeur, mais aussi pour le futur joueur ?
J’ai donc redemandé sur le forum si les textures procédurales consommaient plus de ressource que de charger de images, toujours, Calinou :
Non, comme ils sont générés au moment du chargement (Godot générera la texture du panorama lorsque le ciel changera, et s'il ne change jamais, il ne sera généré qu'une seule fois, ce qui n'affecte pas le framerate). Tu peux ajuster leur résolution dans les propriétés de la ressource ProceduralSky, la valeur par défaut est un défaut sensible, il y a peu de raisons de le changer.
Plutôt clair !

Donc (qui que ce soit), arrêtez moi si je me trompe, mais on peut raisonnablement penser que cette méthode consomme moins de ressources ( « ...comme ils sont générés au moment du chargement...»).
J’avais expérimenté le procédural quelques mois auparavant en créant des échappements de réacteurs pour un véhicule, mais à ce moment là, je n’avais jamais réalisé que je pouvais créer un environnement complet sans une seul image chargée
Poussons cela un peu plus loin et il serait facile d’imaginer texturer tout un projet en utilisant cette méthode. Donc, les personnages/créatures/animaux, plantes, terrains, roches, ciels, vêtements, coques de véhicules, nébuleuses, étoiles, même les HUDs et autres interfaces utilisateurs… En fait : Tout et n'importe quoi !
Oui, beaucoup de temps de travail sauvegardé : Terminé les longues heures passées sur Internet pour trouver des textures HD gratuites (ou beaucoup moins), plus de travaux fastidieux avec The Gimp (ou beaucoup moins), retailler, adapter les résolutions, les contrastes, les couleurs, etc. tout peut être fait directement dans Blender, le joyau de cette méthode, c’est que l’on peut voir les modifications en temps réel dans les viewports.

Mais le but final n’est il pas l’export vers un moteur de jeu ?

Si bien sûr et c’est là ou le bât blesse… pour l’instant…
En effet, grâce au travail présenté ici :
https://www.khronos.org/assets/uploads/ ... 0Mar13.pdf

L’export de shaders Evee/Cycles/BGE (note: ceux-ci sont sensés parfaitement communiquer entre eux en interne dans la future Blender 2.8 !) devraient pouvoir se concrétiser dans un proche avenir… oui, vous avez bien lu ! Je manque encore de précisions à ce sujet, mais dèjà, et en ce qui concerne Godot Game Engine, l’addition du moteur Vulkan (voir l’article ici : Moving to Vulkan (and ES 2.0) instead of OpenGL ES 3.0) permettra, dans les futures version du moteur, de communiquer plus facilement en ce qui concerne les shaders (Pour info, Egosoft vient d’inclure ce moteur dans sa dernière release).
Edit: Aux dernières nouvelles, le BGE ne sera plus présent dans Blender 2.8, et le développement de son successeur, l'upBGE, semble tourner au ralenti, l'initiateur de ce projet ayant quitté le navire (voir le topic sur Github ici: https://github.com/UPBGE/blender/issues/683).

Oui, pour l’instant, la seule solution que l’on est est de coder/traduire les shaders d’ombres et d’effets de lumière/réflexions un par un dans les moteurs autres que Blender (Godot, Unity, Unreal, ...), selon le langage utilisé par ces derniers.
Note : Pour l’instant seuls les diffuses maps sont exportables (les couleurs donc) en pré-calculant (eng = « bake ») les textures dans Blender, le reste est affaire d’import depuis le moteur.

Le futur semble radieux n’est ce pas ? :D
- Le projet"XPlore"
- Tutos Blender
- Tutos Godot Game Engine

“ L'artiste est un malade qui essaie de se soigner en créant, mais plus il se soigne, plus il est malade. Et plus il est malade, plus il est content, vu qu'il n'a aucune envie de guérir." Philippe Geluck

Retourner vers « Zone inondable »