« 1 2 3 4 (5) 6 7 »


Re: hARMful engine
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Ah mais je ne remets pas en cause tes choix. Mais comme je ne m'y connais pas du tout dans tout ça, je voulais juste comprendre pourquoi

Donc, si je comprends bien, toutes ces histoire de shaders concerne en particulier la lumière et l'ombrage. Je comprends, par tes explications, que l'on cherche à optimiser, pour pouvoir utiliser un "couteau suisse" portable plutôt qu'une "boîte à outils" bien lourde et encombrante.

De façon imagée, bien sûr . Mais le principe de voir les choses simples est bien .

Donc, en réalité, les deux choses importantes, et la base de tout rendu, sont la forme (de l'objet) et la lumière (appliquée dessus + les textures) ?

On se rapproche à de la prestidigitation

Contribution le : 03/04 17:34:32
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
La base d'une image 3D, ce sont des maths car ce sont les seules choses que sait faire un ordinateur.

Mais oui, pour résumer ce que tu dis :
- la forme de l'objet, c'est de la géométrie et donc un pan des maths ;
- la lumière, c'est de la physique (laquelle n'est presque rien sans maths).

C'est dingue de voir que ces trucs qui nous ont bien fait ch*** à l'école soient aussi belles maintenant !

Contribution le : 03/04 17:55:22
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
Je suis toujours sur les ombres mais ça devrait aller sur la fin !

J'ai encore amélioré les ombres pour qu'elles soient plus robustes (= qu'il n'y ait pas de bugs !). Je prépare une vidéo pour ça mais il me reste encore un dernier détail à régler.

En attendant, voici une capture d'écran car le souci à fixer ne se produit qu'en bougeant la caméra.

Contribution le : 06/04 09:54:45
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
Je reviens avec le lien de la vidéo. J'ai pas encore pu corriger tous les bugs mais les plus gros sont partis ! Et bien sûr la qualité du rendu s'est grandement améliorée avec le filtrage sur les ombres.


https://www.youtube.com/watch?v=BIaklMRR1RQ

Contribution le : 08/04 01:12:26
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Rien à dire, c'est cool

Contribution le : 08/04 08:08:18
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
Je voulais te remercier mais ça me semblait être du spam de juste écrire "Merci".

Alors j'en profite pour dire que j'ai fait un changement assez important dans la façon de coder un programme avec le moteur. Je n'avais pas pensé aux répercussions mais ce changement majeur m'a fait monter le niveau de version afin de souligner l'impact (et le côté "incompatible" de l'ancien code).
Je m'attaque donc aux optimisations plutôt qu'au matériaux PBR comme prévu. Je préfère changer les plans car ce changement va invalider tout programme réalisé avec le moteur. Ce serait bête de coder plus de choses et de devoir les modifier ensuite... En particulier, je pensais intégrer officiellement une caméra de type "fly cam" comme dans la dernière vidéo où j'ai bidouillé grossièrement.

On passe donc à la v2.0 pour la prochaine release !


Dans la v1.0, le scene tree est constitué d'entités. Ces entités comportent des composants (mesh, lumière, caméra, matériaux, ...) et une matrice de transformation locale. C'est la transformation qui posait le gros souci !

En effet le souci de cette structure, c'est que pour le rendu et plein d'autres choses (dont l'éditeur graphique du moteur), c'est pas bon. Il y a plein de cas où j'ai besoin d'un accès à la matrice de transformation globale (world). Pour le rendu seul, je me débrouillais pour calculer ça petit à petit.

Premier souci : à chaque frame, je parcours le scene graph en entier et je refais les mêmes calculs y compris pour les objets qui n'ont pas bougé. Ce manque d'optimisation était tout à fait assumé, passant au second plan. Seulement, j'ai besoin aussi de la matrice world en dehors du rendu !!
La nouvelle façon de faire va améliorer tout ça dans un premier temps, avec un gain de performance qui va avec normalement. Impossible à évaluer pour le moment mais je ferai des benchmarks avant/après.
J'irai ensuite plus loin.

La nouvelle structure inverse les rôles. Le scene tree n'est plus constitué d'entités. Il est constitué de transformations locales. Comme dans Unity, une "transform" est un noeud dans un arbre. Elle a donc accès à son parent direct ET à ses enfants.
La transform possède l'entité qui, elle, possède toujours ses composants.

J'aurais très bien pu ne pas modifier le code et laisser la transform accéder à ses parent/enfants via son entité. Ca faisait quand même un gros détour assez bizarre pour quelque chose de pourtant essentiel au bon fonctionnement du code. Je m'explique.
Une entité a besoin de connaitre ses composants, c'est un fait. Par contre, elle n'a pas énormément d'intérêt à savoir si sa fille a un matériau blanc à pois roses ou une lampe verte.
Une transform par contre a vraiment besoin de connaître sa mère et ses filles. La mère pour lui demander sa matrice world, les filles pour leur dire qu'elle a changé.

Là où ça va apporter un gros bénéfice du coup, c'est que quand une transformation locale change dans l'arbre, ça va se répercuter automatiquement sur ses enfants.
Ainsi, demander la matrice world d'un élément de l'arbre sera beaucoup plus simple et rapide.
C'était un changement indispensable pour la suite du projet.

Contribution le : 10/04 00:39:50
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
Hello,

Attention, y a du lourd. Premier rendu avec matériau PBR. Ca fait classe !

Attendez de voir le résultat avec le matériau par défaut !
https://pasteall.org/media/a/f/afb84430710cb37c67a4d56ddde737ad.png

C'est du classique pour du temps-réel : vecteur de Fresnel (ici approximation de Schlick) et du Cook-Torrance (BRDF / spéculaire). Les termes ne parlent pas forcément mais vous avez pu voir ces noms dans Blender.

Pour simplifier le code, j'ai supprimé les anciens shaders Phong. En gros le PBR permet de faire du Phong si on va voir.

Contribution le : 15/04 19:16:18
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
Hello,

Encore un peu d'améliorations.
Je m'occupe maintenant de charger les différentes textures du matériau PBR (albedo, roughness, metalness, ...) comme pour EEVEE/Unity/UE4 et autres moteurs existants.
C'est un chargement primitif qui cherche dans un dossier précis. Le mieux sera d'avoir une interface graphique pour choisir les fichiers et les organiser comme on le veut.

Je m'attaque maintenant à l'éclairage ambiant à l'aide d'une HDR.
Alors pour l'instant, je ne charge pas du tout d'HDR. J'ai par contre entamé un premier travail qui simplifie grandement l'utilisation d'une cubemap.

Avant, on devait charger les textures de chaque face "séparément" (sous forme de tableau en fait). C'était embêtant quand on avait une cubemap en une seule texture.

Maintenant, le découpage des différentes faces se fait directement par le code, on n'a plus qu'à entrer une seule image pour la cubemap.
Par exemple celle-ci (la disposition des faces est importante par contre) :


Le résultat de tout ceci (PBR et cubemap entière) est ici.
Je précise encore que l'éclairage n'est pas assuré par la cubemap, j'utilise ici une lampe identique au type "Sun" de Blender.



Le but est maintenant de charger une cubemap au format HDR. De là, je pourrai procéder à de l'éclairage via l'image cubemap et les reflets de celle-ci sur les objets. Ca sera sans doute l'occasion de vous montrer les résultats !

Quand ça marchera, je verrai si je peux convertir une HDR en "projection cylindrique équidistante" ("equirectangular" en anglais) vers une cubemap afin de faciliter d'autant le chargement de ces fichiers.

Contribution le : 18/04 12:28:20
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1574
Rien que ça, ça a l'air réaliste !

Contribution le : 18/04 16:32:44
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 2283
Merci Redstar !! J'avais aussi cette impression mais c'est toujours mieux d'avoir un avis extérieur.
Il y a encore quelques trucs que j'ajouterai aux shaders. Je pense par exemple au rendu de peintures de voitures et aux tissus. Il y a aussi tout ce qui est anisotropie comme ça : https://google.github.io/filament/images/material_anisotropic.png .
Google a fait pas mal de documentation pour son projet open-source Filament, c'est une mine d'or !

Juste en passant, j'arrive à charger une HDR et à l'afficher. Je fais pas un nouveau screenshot, on ne voit pas la différence à l'écran. Par contre, l'intérêt se situe dans les données de la HDR pour l'éclairage (ce que ne permet pas un fichier JPEG ou PNG).

Pour l'instant, je ne vais pas me lancer dans la conversion d'une HDR project... machin vers cubemap. Je pense que je ferai ça du côté de l'éditeur car il me semble que la conversion pourrait prendre beaucoup de temps. J'aimerais donc traiter l'image avant de lancer un jeu par exemple.


Ce tabouret est rendu uniquement avec sa texture de couleur, la normalmap et l'équivalent d'une specularmap. Le moteur gère plus de données encore, mais ici je n'en avais pas besoin. Il n'y a que la "height map" que je ne sais pas encore exploiter.

J'utilise un modèle libre de droit issu de Model Haven. Le rendu me semble similaire à celui exposé. Bizarrement, dans Blender il est beaucoup plus brillant donc il faudra que je regarde ce que j'ai mal configuré dans EEVEE.
https://3dmodelhaven.com/model/?c=interior%20design&m=WoodenTable_02

Le site propose encore assez peu de contenu mais il est totalement libre et donc parfait pour publier mon code de démo sur GitHub !
D'ailleurs, j'ai utilisé une des HDR du même site mais convertie en cubemap avec un outil externe.
https://hdrihaven.com/hdri/?c=indoor&h=entrance_hall

J'ai aussi essayé le rendu d'un pistolet qui possède des surfaces métalliques (aux propriétés légèrement différentes) et ça semblait bon. Mais pour l'instant, c'est pas très intéressant à montrer. Il faudra attendre les reflets ! Là aussi, je n'ai pas réussi à avoir un rendu correct avec EEVEE, en utilisant pourtant les mêmes textures...

Contribution le : 18/04 23:22:20
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
« 1 2 3 4 (5) 6 7 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Questions & Réponses [non résolu] Problème IK : pied qui tourne au lieu d'être fixé au sol 3 37 Aujourd'hui 17:23:57
Horemheb 
Questions & Réponses appliquer une animation NLA 1 14 Aujourd'hui 16:16:13
prometheusx 
Moteur de jeu GameBlender et alternatives [WIP] DeadSigns FPS horreur - Date de sortie 1er juillet 2020    [1][2][3]...[51] 504 87033 Aujourd'hui 13:08:43
Hook 
Questions & Réponses affichage progressif bevel de courbe 5 92 Aujourd'hui 10:25:23
jlf 
The Blender Clan 'tchat Free addon Modélisation procédurale par nodes 1 43 Aujourd'hui 08:47:52
WinZs 
[WIP] et travaux terminés [WIP] Alpaga in love 7 150 Aujourd'hui 00:20:08
Bibi09 
Questions & Réponses Problème de rendu (débutant) 1 41 Hier 16:16:59
Rimpotche 
Questions & Réponses Grosse différence d'éclairage sur le rendu final VS le mode Rendered 9 131 29/05 21:42:20
Crocodile_13 
Questions & Réponses Problème avec le nodes Color Ramp 5 174 29/05 20:59:01
JaAlVir657 
Python & Plugins Comment renommer "Key" ? (le chef des shapekeys)    [1][2] 18 455 29/05 19:06:29
lucky 
Questions & Réponses [résolu] théorie lowpoly / highpoly 3 64 29/05 17:53:57
moonboots 
Moteur de jeu GameBlender et alternatives hARMful engine    [1][2][3]...[7] 65 6320 29/05 16:40:53
Bibi09 
[WIP] et travaux terminés Les fonds de mes rendus 4 155 29/05 14:05:18
Crocodile_13 
Python & Plugins [résolu] obtenir un résultat fixe suite au déplacement souris 1 106 28/05 14:28:07
Bibi09 
Moteurs de rendu rendu Povray sous Blender 2.6 + trace de log 7 12113 28/05 00:25:30
MauriceRaybaud 
Questions & Réponses [non résolu] Personnage et CAT5 - VRCHAT 0 80 27/05 22:31:10
Muffet 
Questions & Réponses Conseils pour modéliser un corps 4 177 27/05 17:48:43
moonboots 
Questions & Réponses Comment dupliquer une face autour d'un axe? 1 86 26/05 19:05:12
moonboots 
Questions & Réponses Comment faire une boucle infinie (animation) 9 176 26/05 13:00:46
3dlone 
Moteur de jeu GameBlender et alternatives [WIP] Jeu "Iron Man Collapsing"    [1][2][3] 27 8866 26/05 01:39:39
Bibi09 

Qui est en ligne
131 utilisateur(s) en ligne (dont 95 sur Forums)

Membre(s): 1
Invité(s): 130


ebrain, plus...
Nouveaux membres
ShayneWcv8 31/5/2020
AnnieM0148 31/5/2020
BobbieMatt 31/5/2020
Samux 30/5/2020
titisteph 29/5/2020
Muffet 27/5/2020
MadK 26/5/2020
Osziy_ 26/5/2020
Elliott42 25/5/2020
Ben3D 25/5/2020
Dernier Ajout
mirages-preview~0.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 11
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 270 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2020 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445