« 1 2 3 4 (5) 6 7 8 9 »


Re: hARMful engine
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1796
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/2020 17:34
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3039
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/2020 17:55
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3039
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/2020 09:54
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3039
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/2020 01:12
Créer un fichier PDF de la contribution Imprimer


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

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


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3039
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/2020 00:39
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3039
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/2020 19:16
Créer un fichier PDF de la contribution Imprimer


Re: hARMful engine
OverdOzed
Inscrit:
23/02/2006 18:10
De Alpes-Maritimes
Post(s): 3039
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/2020 12:28
Créer un fichier PDF de la contribution Imprimer


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

Contribution le : 18/04/2020 16: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): 3039
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/2020 23:22
Créer un fichier PDF de la contribution Imprimer



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




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] armature qui suit une autre armature 3 116 Aujourd'hui 13:27:17
Many 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[17] 162 12905 Aujourd'hui 11:43:02
moonboots 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[5] 44 2223 Aujourd'hui 11:04:48
blend74 
Inkscape Créer des fichiers dxf séparé 0 11 Aujourd'hui 10:01:46
Redstar 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[54] 539 163556 Hier 20:38:05
sbkodama 
Python & Plugins Mesh Cranium ( base mesh pour la sculpture 3D ) 0 35 Hier 08:52:22
stev 
[WIP] et travaux terminés Visage humain 4 221 Hier 07:08:36
Guilleto 
The Blender Clan 'tchat Les tutos de Stev ( CG Groovy ) 5 613 Hier 06:16:16
stev 
The Blender Clan 'tchat Impact de la compression sur le temps de rendu 0 58 25/07 09:57:17
Bibi09 
Hors Sujet !! un personnage de Blendman :) - Modélisation a partir de cubes 0 86 24/07 20:42:05
meltingman 
Questions & Réponses [résolu] Png et liseré blanc 5 237 23/07 20:56:32
meltingman 
Hors Sujet !! Sinoceratops project - Ateliers suivies de A à l'Animation    [1][2][3] 28 1487 23/07 16:11:40
meltingman 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[26] 256 29970 20/07 20:56:17
Bibi09 
[WIP] et travaux terminés Mission sur Mars - Terminé 5 227 19/07 11:41:42
BlendX 
[WIP] et travaux terminés [WIP] sinocératops    [1][2] 10 472 18/07 21:02:55
meltingman 
Le coin des geeks Colorisation, Krita ou Photoshop ?    [1][2] 14 566 18/07 20:50:51
sapajou 
Questions & Réponses Trace de la trajectoire d'un objet 5 231 17/07 18:33:25
moonboots 
Questions & Réponses Problème intersect boolean 5 239 16/07 15:40:44
Altasien 
Questions & Réponses Artefacts de verre sous Eevee 7 261 14/07 15:58:03
moonboots 
[WIP] et travaux terminés Anatomie open source dans Blender 5 685 14/07 07:26:06
Melodicpinpon 

Qui est en ligne
160 utilisateur(s) en ligne (dont 103 sur Forums)

Membre(s): 0
Invité(s): 160


plus...
Nouveaux membres

Nemo
11/3/2021
qingjie 10/3/2021
Kask909 9/3/2021
marie-antoinette 7/3/2021
Bugs 7/3/2021
lolorogli75 4/3/2021
Flagiel 4/3/2021
thedeathclown 1/3/2021
Littlespoon 28/2/2021
luxperpetua 27/2/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Aou 4
Anniversaire de xemphra
Aou 7
anniversaire Cem47
Aou 13
Anniversaire Siskas
plus 252 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445