Nous sommes ravis de partager plus de détails sur les nouvelles fonctionnalités d'éclairage qui seront intégrées à Unity 6 dans le courant de l'année.
Grâce à la nouvelle architecture robuste de cuisson des lumières et à l'approche innovante de la création d'environnements éclairés par des sondes de lumière à l'aide des volumes de sondes adaptatifs (APV), vous bénéficierez d'un processus de création de lumière plus rationalisé . Cela améliorera considérablement vos images tout en garantissant des performances élevées lors de l'exécution.
Si vous avez déjà travaillé avec des données d'éclairage précalculées, vous savez à quel point le processus peut être fastidieux. Le processus de précalcul pour les Lightmaps peut prendre beaucoup de temps ; les UV des Lightmaps doivent être créés, les sondes doivent être placées pour que les objets dynamiques soient éclairés correctement, et vous devrez gérer des textures volumineuses qui peuvent peser lourdement sur la mémoire d'exécution de vos applications.
Dans Unity 6, nous avons ajouté une nouvelle façon de créer des environnements éclairés par sonde lumineuse de meilleure qualité grâce aux volumes de sonde adaptatifs (APV), et nous avons apporté des améliorations fondamentales au backend de cuisson de la lumière pour une plus grande stabilité.
Un volume de sondes adaptatives est un groupe de sondes lumineuses qu'Unity place automatiquement en fonction de la densité de la géométrie dans votre scène, afin de créer un éclairage indirect.
En raison de sa nature adaptative, APV génère des sondes plus denses dans les zones plus géométriques et moins de sondes dans les zones où les objets sont moins denses, comme l'arrière-plan d'une scène.
Les volumes de sondes adaptatives vous offrent également une suite complète de fonctions puissantes pour créer des environnements magnifiquement éclairés.
- Simplification des flux de travail pour le placement des sondes et accélération de l'itération pour l'éclairage indirect diffus basé sur des sondes lumineuses.
- L'éclairage APV par pixel offre une qualité nettement supérieure à celle des groupes de sondes lumineuses et une meilleure directionnalité par rapport aux cartes lumineuses, ce qui permet d'obtenir une excellente qualité d'éclairage globale.
- S 'intègre parfaitement aux effets atmosphériques, ce qui permet d'obtenir des effets tels que le brouillard volumétrique dans HDRP et les particules VFX Graph dans URP et HDRP qui sont magnifiquement éclairés par la lumière indirecte.
- Permet des transitions d'éclairage visuellement étonnantes grâce à l'occlusion du ciel et aux scénarios d'éclairage, qui conviennent aux situations d'heure de la journée et d'allumage/extinction des lumières.
- Permet de mieux contrôler les optimisations pour les performances d'exécution, en fonction de votre utilisation du pipeline de rendu et du matériel cible.
- Exécute une suite de fonctions de diffusion en continu, permettant aux données de la sonde lumineuse d'être diffusées du disque au processeur, et du processeur au GPU.
- Fournit un ensemble d'outils puissants pour réduire les fuites de lumière.
Le projet URP 3D Sample utilise actuellement les dernières fonctionnalités de 2022 LTS.
Pour les besoins de la démonstration, nous avons mis à jour les scènes URP 3D Sample de 2022 LTS vers Unity 6 Preview et la fonctionnalité Adaptive Probe Volumes.
APV est un système basé sur le volume qui automatise le placement des sondes plutôt que de les placer à la main.
L'onglet des paramètres généraux d'APV vous permet de contrôler des paramètres tels que Minet Max Probe Spacing pour piloter la création de plusieurs niveaux de subdivision en fonction de la géométrie environnante. Par défaut, les zones denses utiliseront la résolution la plus élevée, tandis que les zones moins géométriques utiliseront des niveaux de densité plus faibles. Ce comportement automatique et adaptatif garantit une allocation efficace des ressources, en se concentrant sur les domaines où elles sont le plus nécessaires.
Pour générer automatiquement des sondes, vous pouvez créer un volume de sondes adaptatif. Pendant que vous travaillez, vous pouvez voir les mises à jour en direct, ce qui vous permet de prévisualiser l'emplacement du palpeur sans avoir à le cuire. Ces mises à jour sont basées sur les briques et les niveaux de subdivision que vous avez préalablement définis, qui s'ajustent ensuite en fonction de la proximité de la géométrie voisine.
Generate Lighting calcule à l'avance toutes les données d'éclairage, y compris les sondes lumineuses, que vous pouvez visualiser dans votre scène. La prévisualisation à l'aide de briques permet de voir les différents niveaux de subdivision qui ont été appliqués lors du placement des sondes.
Si vous avez déjà travaillé avec des données de sondes optiques, vous connaissez peut-être les problèmes courants liés aux fuites de lumière. Lors du développement d'APV, nous avons ajouté toute une boîte à outils pour résoudre les problèmes de fuites de lumière, comme le décalage virtuel, la dilatation, les volumes d'ajustement des sondes, les couches de rendu et les modes de prévention des fuites de lumière "Performance" et "Qualité".
En voici un exemple. En utilisant les vues de débogage de l'éclairage, nous pouvons observer un cas d'utilisation problématique pour les fuites de lumière. Dans cette situation, la lumière vive provenant de l'extérieur est visible à travers les murs et le sol du bâtiment. À l'extérieur, le problème est inverse : un éclairage sombre s'échappe de l'intérieur. Cela est probablement dû à la faible résolution (1 mètre entre les sondes) et aux parois minces. Voyons comment nous pouvons y remédier.
Pour étudier ce problème, l'option Debug Probe Samplingvous permet d'afficher chacune des sondes échantillonnées ainsi que leurs poids respectifs. Dans notre cas, nous pouvons voir que le résultat est interpolé entre les sondes lumineuses de l'extérieur et les sondes sombres de l'intérieur. Idéalement, l'intérieur de la tente ne devrait échantillonner que les sondes intérieures.
Rendering Layers for APV(introduit dans 6000.1f.1) vous permet de créer jusqu'à quatre masques différents et de restreindre l'échantillonnage à ces masques spécifiques pour certains objets. Cela peut s'avérer extrêmement utile pour empêcher les objets intérieurs d'échantillonner les sondes extérieures, et vice versa.
Lors de la génération de l'éclairage, le système attribue automatiquement des couches aux sondes pendant le processus de cuisson en fonction des objets à proximité, ce qui élimine la nécessité d'attribuer manuellement des couches à chaque sonde. Une fois cela fait, vous pouvezGenerate Lighting et observer que les fuites sont réduites pour la tente, grâce à la création manuelle de masques distincts pour l'intérieur et l'extérieur.
Pour mieux contrôler la prévention des fuites de lumière, vous pouvez utiliser les modes de réduction des fuites d'Unity "Performance" et "Qualité".
Le mode Performance permet de réduire les fuites en éloignant le lieu d'échantillonnage des sondes non valides. Cette méthode fonctionne généralement bien dans les scénarios simples, où il est possible d'identifier un lieu d'échantillonnage approprié pour toutes les sondes valides, tout en évitant les sondes non valides. Toutefois, en fonction de la configuration de la sonde, il se peut qu'il n'y ait pas d'emplacement optimal pour l'échantillonnage. Il en résulte un échantillonnage de sondes non valides et des fuites potentielles.
Le mode qualité (introduit dans la version 6000.0.3f1), désormais activé par défaut, utilise jusqu'à trois tentatives d'échantillonnage pour s'assurer que seules les sondes valides sont utilisées. Ce mode peut introduire un léger surcoût sur les performances d'exécution, qui peut être particulièrement perceptible sur les plates-formes bas de gamme.
Vous pouvez combiner la réduction des fuites et les couches de rendu pour éviter encore plus de fuites de lumière. Ce mode permet de s'assurer que les sondes non valides, que ce soit en raison de problèmes de validité ou parce qu'elles se trouvent sur une couche différente, ne sont pas échantillonnées.
En outre, nous avons amélioré les niveaux de subdivision multiples en réduisant les raccords potentiellement visibles entre les différents niveaux (débarqué dans la version 6000.0.4f1). Ceci est réalisé automatiquement en remplaçant les valeurs des sondes frontières situées entre deux niveaux par des valeurs pré-interpolées. Comme ce processus a lieu au moment de la cuisson, il n'y a pas de coût de performance associé au moment de l'exécution.
Avec APV, vous pouvez obtenir des transitions d'éclairage visuellement étonnantes grâce à l'occlusion du ciel et aux scénarios d'éclairage, qui conviennent aux situations d'heure du jour et d'allumage/extinction des lumières.
Vous trouverez ensuite deux exemples de transitions d'éclairage, d'abord à travers les Scénarios d'éclairage avec APV dans la scène Oasis du projet URP 3D Sample, puis à travers l'Occlusion du ciel avec APV dans la scène Jardin.
L'APV facilite la réalisation de divers scénarios d'éclairage en permettant la commutation ou le mélange de données d'éclairage cuites. Cette fonction est particulièrement utile pour simuler des heures de la journée ou pour alterner entre des lumières allumées et éteintes au sein d'une même scène ou d'un même set de cuisson.
Les scénarios d'éclairage ne gèrent que les données de la sonde lumineuse APV cuite ; les autres éléments doivent être traités manuellement. Pour donner un exemple dans la scène de l'Oasis, nous avons créé un script pour mettre à jour le ciel, les lumières, les paramètres du brouillard et les sondes de réflexion. Les scénarios de cuisson APV peuvent être gérés au moment de l'exécution à l'aide de l'API ProbeReferenceVolume; un exemple peut être trouvé dans la documentation.
L'occlusion du ciel offre une alternative aux scénarios d'éclairage pour gérer les transitions d'éclairage dans la scène. Il s'agit d'une configuration plus simple, avec une seule cuisson, qui ne nécessite pas de scénarios multiples. En revanche, l'occlusion du ciel gère exclusivement l'éclairage du ciel et ne s'étend donc pas à la gestion de l'éclairage indirect pour les lumières directionnelles ou ponctuelles.
L'occlusion du ciel utilise des données de cuisson supplémentaires pour gérer l'éclairage du ciel différemment, ce qui est distinct de la cuisson du ciel APV standard. Ces données stockent la quantité de lumière du ciel que chaque zone de la scène doit recevoir, ce qui permet d'ajuster la couleur et l'intensité de l'éclairage du ciel pendant l'exécution. L'utilisation d'une sonde d'ambiance dynamique au moment de l'exécution, en plus de ces données d'occlusion cuites et statiques, permet d'obtenir une bonne approximation de l'éclairage du ciel, tout en permettant des ajustements dynamiques de l'éclairage de la scène.
L'occlusion du ciel est prise en charge à la fois par l'URP et le HDRP. Dans le HDRP, la sonde ambiante est mise à jour automatiquement à partir du ciel physique du HDRP. Dans URP, cependant, lorsque l'on utilise le mode Skybox, la sonde d'ambiance ne peut pas se mettre à jour automatiquement et en temps réel lorsque le ciel change. Pour cela, il faut animer manuellement la couleur à l'aide du mode Dégradé ou Couleur pour qu'elle corresponde aux images animées du ciel, car Unity ne s'adapte pas automatiquement aux changements de couleur du ciel.
Si l'on prend l'exemple de la scène du jardin, le mode dégradé des paramètres de l'environnement permet d'animer manuellement la couleur ambiante de la sonde. Associée aux données d'occlusion, cette configuration permet de créer une approximation convaincante pour animer l'éclairage diffus du ciel, adaptée à la représentation des changements d'heure de la journée. Cette méthode utilise une seule cuisson sans scénarios d'éclairage multiples et permet d'obtenir une large gamme de variations de couleurs.
Pour en savoir plus, consultez notre documentation sur l 'implémentation de l'APV dans le pipeline de rendu universel (URP) et sur l' APV dans le pipeline de rendu haute définition (HDRP).
Avec la nouvelle architecture de Light Baking d' Unity livrée dans Unity 6, le GPU Light Baker n'est plus disponible en avant-première.
La nouvelle machine à pain légère a été conçue en tenant compte de la réactivité de l'éditeur et de la vitesse de cuisson. Cela signifie que lors de l'utilisation de la cuisson à la demande, Unity prend désormais un "instantané" de l'état de la scène lorsque l'on clique sur le bouton Generate. Unity ne vérifie plus l'état de la scène à chaque image, ce qui nuisait auparavant aux performances de l'éditeur.
Ce backend de cuisson remanié a considérablement simplifié notre base de code, ce qui facilite et accélère la correction des bogues et réduit le risque d'en introduire de nouveaux.
Nous vous proposons également un nouveau profil de cuisson qui vous permet de choisir l'objectif de votre flux de travail.
Vous pouvez choisir une fourchette allant de "l'utilisation la plus faible de la mémoire" - idéale si vous souhaitez continuer à travailler dans l'éditeur et obtenir la meilleure réactivité globale de l'éditeur - à "la performance la plus élevée", qui est utile si vous souhaitez effectuer le travail le plus rapidement possible et que vous n'avez pas besoin de travailler sur autre chose dans l'éditeur pendant le temps de cuisson.
La création itérative et le dépannage des données d'éclairage cuites est un cas d'utilisation important pour les créateurs qui utilisent l'illumination globale (IG) cuite.
C'est pourquoi nous avons ajouté une nouvelle fonctionnalité de prévisualisation interactive aux différents modes de dessin de la vue de scène liés à l'IG, en remplaçant la génération automatique d'Unity par un mode de prévisualisation interactif de débogage de l'IG dédié à la prévisualisation des données d'éclairage.
Cela permet de mettre à jour les vues de débogage de manière interactive au fur et à mesure que la scène est modifiée. La prévisualisation est non destructive, puisqu'elle ne remplace pas les données d'éclairage cuites.
L'abandon de l'ancienne architecture Auto-Generate de Unity nous permet d'optimiser le pipeline de cuisson pour une plus grande stabilité.
Notez que Unity 6 est la dernière version supportée par Enlighten Realtime GI. Vous pouvez trouver plus de détails sur la trajectoire de dépréciation que nous avons communiquée précédemment dans le message du forum "Update on Global Illumination 2021".
Voici les liens vers les précédentes demandes de commentaires, pour les versions bêta 2023.1, 2023.2 et Unity 6 (2023.3) respectivement :
- L'illumination globale change avec la version bêta 2023.1
- L'illumination globale change avec la version bêta 2023.2
- L'illumination globale change avec la version bêta de Unity 6 (2023.3)
Nous sommes impatients de voir vos créations utilisant les nouvelles fonctionnalités d'éclairage de Unity 6. N'hésitez pas à nous faire part de vos commentaires dans le forum Global Illumination ou dans le nouvel espace de discussion d' Unity !