Générer des lightmaps au lancement d'une scène.

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Générer des lightmaps au lancement d'une scène.

Message par TheParadox » 01 Sep 2019 13:58

Bonjour,

Dans le projet sur lequel je travailles, l'environnement est généré procéduralement au lancement de la scène (dans une fonction Awake).
Je ne peux donc pas utiliser de lightmap pré-générées....

Actuellement, pour avoir un rendu visuel pas trop mauvais, j'utilise SEGI.
Mais cela m'empêche d'utiliser HDRP, et donc me prive des outils comme Shadergraph et Visual Effects.
Ma scène reste fixe une fois générée, donc le système de rendu dynammique SEGI n'est pas vraiment utilisé à bon escient et fait pas mal baisser les performances...

Je voudrais donc savoir s'il y aurait un moyen pour générer la lightmap de ma scène à son lancement ? (Juste après les fonction Awake et Start du coup)
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Générer des lightmaps au lancement d'une scène.

Message par Alesk » 01 Sep 2019 17:03

A priori, Unity ne permet pas de calculer les lightmaps lors de l'exécution du jeu.
SEGI semble être la seule solution actuellement...

Il y a POLM aussi : https://forum.unity.com/threads/polm-gp ... st.384196/
Mais ça ne tourne que dans l'éditeur, donc ça ne t'aideras pas plus que ça.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Générer des lightmaps au lancement d'une scène.

Message par TheParadox » 01 Sep 2019 18:08

Je vois, je vais devoir me contenter de SEGI et oublier Shadergraph alors :/ .

Pour optimiser l'utilisation de SEGI, j'ai maximisé la zone de rendu pour que tout l'environnement soit calculé, et il ne s'active qu'une frame après la génération de l'environnement. Ca m'a fait gagner 20 FPS.
C'est comme si je calculais les lightmaps au lancement au final, mais en utilisant SEGI ...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Générer des lightmaps au lancement d'une scène.

Message par Alesk » 02 Sep 2019 09:33

Je n'ai jamais utilisé SEGI, donc je ne sais pas ce qu'il implique... Mais si tu pré-calcules tes lightmaps au départ, normalement après tu n'as plus besoin de SEGI lors du reste de l'exécution du code de ton jeu. Je ne comprends donc pas pourquoi ça rame ou ça te coince par la suite.
Peux-tu détailler un peu plus ton processus stp ? Y'a forcément un moyen d'arranger ça.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Générer des lightmaps au lancement d'une scène.

Message par TheParadox » 02 Sep 2019 11:57

Alesk a écrit :
02 Sep 2019 09:33
Mais si tu pré-calcules tes lightmaps au départ, normalement après tu n'as plus besoin de SEGI
C'est ce que je fais justement : SEGI s'active pendant la première frame après la génération de l'environnement, puis se désactive juste ensuite. Donc oui toute la map est calculée puis SEGI n'intervient plus, ce qui m'a fait gagné 20 FPS par rapport à quand SEGI était activé en permanence.

Donc à ce niveau là c'est bon, SEGI fonctionne et ne fait pas ramer. Mais il me prive quand même de Shadergraph, puisqu'on ne peut pas l'utiliser avec HDRP..
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Générer des lightmaps au lancement d'une scène.

Message par Alesk » 02 Sep 2019 14:36

TheParadox a écrit :
02 Sep 2019 11:57
Donc à ce niveau là c'est bon, SEGI fonctionne et ne fait pas ramer. Mais il me prive quand même de Shadergraph, puisqu'on ne peut pas l'utiliser avec HDRP..
y'a pas moyen de tricher ?
Tu fais une scène de baking sans HDRP, et quand c'est calculé, paf tu charges ta scène avec HDRP... après je ne sais pas du tout s'il est possible d'avoir les deux moteurs de rendu qui coexistent dans un même projet...

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Générer des lightmaps au lancement d'une scène.

Message par TheParadox » 02 Sep 2019 16:07

Je ne penses pas que ce soit possible... SEGI utilise le Rendering Path en "Deferred", donc pas compatible avec HDRP.
Il faudrait changer la chemin de rendu de la caméra pour passer en HDRP, et donc SEGI cesserait de fonctionner et d'afficher la scène bakée.

Bien pensé, mais ça aurait été trop beau :lol:
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Générer des lightmaps au lancement d'une scène.

Message par Alesk » 02 Sep 2019 20:30

Y'a un truc que je capte pas bien : le baking ça consiste à stocker les informations d'éclairage dans des textures et/ou des vertexcolor afin de n'avoir aucun calcul excessif au moment du rendu.

Si tu ne fais que ça, je ne vois pas ce qui coince par la suite.

Puisque tu n'utilises SEGI qu'au démarrage, pour faire ton baking, tu n'es plus censé en avoir besoin ensuite... ou alors il y a un truc qui m'échappe.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Générer des lightmaps au lancement d'une scène.

Message par TheParadox » 02 Sep 2019 23:27

Alesk a écrit :
02 Sep 2019 20:30
le baking ça consiste à stocker les informations d'éclairage dans des textures et/ou des vertexcolor afin de n'avoir aucun calcul excessif au moment du rendu.
Il me semble oui, je n'y connais pas grand chose à vrai dire :hehe: , mais ça me parait logique.
Alesk a écrit :
02 Sep 2019 20:30
Puisque tu n'utilises SEGI qu'au démarrage, pour faire ton baking, tu n'es plus censé en avoir besoin ensuite... ou alors il y a un truc qui m'échappe.
Je viens d'essayer quand même : lancer SEGI avec la caméra en Forward (au lieu de Deferred pour SEGI ).
Résultat :
SEGI bake effectivement la scène, mais le rendu est ensuite assez bizare (et moche), tout devient grisâtre et des bugs de luminosité apparaissent.
A mon avis, SEGI bake la scene d'une manière qui fait que ça ne marche correctement que pour une caméra en Defered....
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Générer des lightmaps au lancement d'une scène.

Message par Alesk » 02 Sep 2019 23:38

TheParadox a écrit :
02 Sep 2019 23:27
Je viens d'essayer quand même : lancer SEGI avec la caméra en Forward (au lieu de Deferred pour SEGI ).
Résultat :
SEGI bake effectivement la scène, mais le rendu est ensuite assez bizare (et moche), tout devient grisâtre et des bugs de luminosité apparaissent.
A mon avis, SEGI bake la scene d'une manière qui fait que ça ne marche correctement que pour une caméra en Defered....
Ha, c'est étrange ça... aurais-tu moyen de nous montrer ce que ça donne, ainsi que les textures générées à part ?

Répondre

Revenir vers « Unity le logiciel »