Découvrez les nouveautés de la version 2020.1 en matière de graphismes. Pour en savoir plus, consultez les notes de version.
Camera Stacking dans le pipeline de rendu universel
Quand vous concevez un jeu, il vous arrive souvent de vouloir inclure un élément rendu hors du champ de la caméra principale. Par exemple, dans un menu de pause, vous pouvez avoir envie d'afficher une certaine version du personnage, ou alors, dans une mécanique de jeu, vous avez besoin d'une configuration spéciale pour le rendu du cockpit.
Vous pouvez désormais utiliser la fonction Camera Stacking pour superposer la vue de plusieurs caméras et créer une vue combinée unique. Ainsi, vous pouvez créer des effets tels qu'un modèle 3D dans une interface utilisateur en 2D, ou le cockpit d'un véhicule. Consultez la documentation pour connaître les limites actuelles.
Mises à jour de l'éclairage
Les ressources de paramètre d'éclairage permettent aux utilisateurs de modifier des paramètres utilisés par plusieurs scènes simultanément. Cela signifie que les modifications de plusieurs propriétés peuvent se propager rapidement dans vos projets, ce qui est parfait pour les artistes spécialisés en éclairage, qui ont besoin d'appliquer des modifications à plusieurs scènes. Il est désormais bien plus rapide de passer d'un jeu de paramètres d'éclairage à un autre, par exemple, lorsque vous passez de précalculs de travail aux précalculs en qualité de production.
Attention : les paramètres d'éclairage ne sont plus inclus dans le fichier de la scène, mais dans un fichier indépendant du projet, qui stocke tous les paramètres liés à l'éclairage global précalculé.
La vidéo ci-dessus vient du projet Enter the Room, créé par Nedd pour ICRC.

Emballage sans superposition
Il est maintenant bien plus simple de configurer des modèles pour le lightmapping.
Pour créer la lightmap d'objets, ceux-ci doivent d'abord être « dépliés » pour aplatir la géométrie et obtenir des coordonnées de texture 2D (UV). Cela signifie que tous les côtés doivent être mappés à une partie unique de la lightmap. Les zones qui se superposent peuvent entraîner une dispersion lumineuse et générer d'autres effets visuels non souhaités dans le résultat final.
Pour empêcher cette dispersion entre tableaux d'UV adjacents, les zones à géométrie ont besoin d'un padding suffisant dans lequel les valeurs d'éclairage peuvent se dilater. Ainsi, l'effet du filtre de texture ne calculera pas de valeurs moyennes à partir des tableaux voisins, qui ne correspondent pas toujours aux valeurs d'éclairage attendues en limite d'UV.
L'emballage automatique de Unity crée une marge d'emballage minimale entre les UV de la lightmap, pour permettre cette dilatation. Cette opération s'effectue lors de l'importation. Cependant, quand vous utilisez des densités de texel faibles dans la scène ou quand vous redimensionnez des objets, les données de la lightmap peuvent malgré tout avoir un padding insuffisant.
Pour simplifier le processus d'identification de la taille de marge d'emballage appropriée lors de l'importation, Unity propose désormais une méthode de calcul de marge dans l'importateur du modèle. Vous pouvez y préciser la résolution minimale de la lightmap à laquelle le modèle sera utilisé, ainsi que l'échelle minimum. À partir de ces données, l'outil de déballage de Unity calculera la marge d'emballage requise, de façon à ce que les lightmaps ne se superposent pas.

GPU et CPU Lightmapper : échantillonnage amélioré
La corrélation dans le path tracing est un phénomène lors duquel des échantillons aléatoires d'une scène lightmappée peuvent faire comme un amas ou du bruit. Dans la version 2020.1, nous avons intégré une meilleure méthode de décorrélation pour CPU et GPU Lightmapper.
Ces améliorations de la décorrélation sont actives par défaut et n'ont pas besoin d'intervention de l'utilisateur. Le résultat : des lightmaps qui convergent vers un résultat dénué de bruit en temps réel et affichent moins d'éléments.
Nous avons aussi augmenté la limite d'échantillons du Lightmapper : 1 milliard au lieu de 100 000 échantillons. Cette mise à jour est utile pour les projets du type visualisation architecturale, où les conditions d'éclairage compliquées peuvent générer du bruit dans la lightmap.
Nous apporterons encore d'autres améliorations à cette fonctionnalité dans la version 2020.2, que vous pouvez déjà tester en version alpha.

Optimisations de lightmapping
Pendant le lightmapping, nous lançons des rayons dans la scène, qui rebondissent sur les surfaces et créent des trajectoires lumineuses qui servent à calculer l'éclairage global. Plus un rayon rebondit, plus longue est la trajectoire et plus la génération d'échantillon prend de temps. Ainsi, le temps nécessaire pour créer la lightmap de la scène s'en trouve allongé.
Pour plafonner ce temps nécessaire pour calculer chaque rayon, le lightmapper doit trouver des critères qui permettent de mettre un terme à chaque trajectoire. Pour cela, vous pouvez définir une limite du nombre de rebonds autorisés pour chaque rayon. Pour optimiser encore davantage le processus, vous pouvez utiliser une technique appelée « roulette russe », qui choisit de façon aléatoire à quelles trajectoires mettre fin précocement.
Cette méthode tient compte de l'importance d'une trajectoire dans l'éclairage global de la scène. Chaque fois qu'un rayon rebondit sur une surface sombre, les chances que sa trajectoire soit interrompue augmentent. Cette sélection des rayons réduit le temps de calcul global et affecte peu la qualité de l'éclairage.
L'image ci-dessus vient du projet Enter the Room, créé par Nedd pour ICRC.

Contributeurs et récepteurs du mode de vue Scene
Avec les contributeurs et les récepteurs du mode de vue Scene, vous pouvez voir quels objets influencent l'éclairage global de la scène. Il est aussi plus facile de voir rapidement si l'éclairage global provient de lightmaps ou de Light Probes.
Quand vous utilisez le mode de vue Scene, les moteurs de rendu de maillage sont indiqués dans des couleurs différentes selon qu'ils contribuent à l'éclairage global et/ou selon leur façon de recevoir cet éclairage. Ce mode de vue Scene fonctionne dans tous les pipelines de rendu programmables, en plus du moteur de rendu intégré de Unity.
Ce mode est particulièrement utile avec les Light Probes, car il fournit un bon aperçu de l'utilisation des probes. Vous pouvez personnaliser les couleurs dans le panneau Preference, pour améliorer l'accessibilité.
Ray tracing pour les maillages animés (preview)
Ray Tracing (preview) prend désormais en charge l'animation via le composant Skinned Mesh Renderer. Le cache Alembic Vertex et les maillages à contenus dynamiques (voir l'exemple ci-dessous) sont maintenant pris en charge dans l'option Dynamic Geometry Ray Tracing dans le menu Renderers. Rejoignez-nous dans le forum Ray Tracing du pipeline de rendu HD (HDRP) si vous souhaitez tester ces fonctionnalités. Consultez aussi notre article sur les fonctionnalités de ray tracing dans le HDRP.

Streaming Virtual Texturing (preview)
Streaming Virtual Texturing est une fonctionnalité qui réduit l'utilisateur de la mémoire GPU et le temps de chargement des textures quand votre scène comprend de nombreuses textures haute résolution. Elle divise les textures en tuiles et les charge progressivement dans la mémoire GPU quand elles sont utilisées. Elle est prise en charge dans le pipeline de rendu HD (version 9.x preview et ultérieure) et peut être utilisée dans Shader Graph.
Vous pouvez prévisualiser le package en cours dans cet exemple de projet. Dites-nous ce que vous en pensez sur le forum.