Nuanceur Graphics Tools Standard — MRTK3
Le système de trame Graphics Tools Standard utilise un nuanceur flexible qui peut obtenir des visuels similaires à ceux du nuanceur Standard (ou Lit) de Unity. Il implémente les principes du Système Fluent Design et reste performant sur des appareils de réalité mixte.
Exemple
Consultez l’exemple de Galerie de matériaux pour plusieurs démonstrations de variantes de nuanceur Graphics Tools/Standard. Pour obtenir des exemples de Graphics Tools/Standard Canvas, consultez l’exemple UnityUI
Architecture
Le système de trame Graphics Tools/Standard est un « uber shader » (nuanceur géant) qui utilise la fonctionnalité de variante de programme de nuanceur de Unity pour générer automatiquement du code de nuanceur optimal en fonction des propriétés de matériaux. Quand un utilisateur sélectionne les propriétés d’un matériau dans l’inspecteur de matériaux, il n’encourt des coûts de performance que pour les fonctions qu’il a activées.
Pour mieux prendre en charge les workflows Unity traditionnels et les workflows (canevas) UnityUI, le système de trame Graphics Tools/Standard comporte deux points d’entrée de nuanceur :
Context | Default | UnityUI |
---|---|---|
Nom | Graphics Tools/Standard | Graphics Tools/Standard Canvas |
Nuanceur | GraphicsToolsStandard | GraphicsToolsStandardCanvas |
Les deux nuanceurs sont essentiellement identiques, car ils partagent un code de nuanceur commun. Graphics Tools/Standard Canvas contient une logique supplémentaire spécifique de UnityUI.
Le nuanceur suivant inclut l’alimentation du système de trame Graphics Tools/Standard :
Inclure | Objectif |
---|---|
GraphicsToolsStandardProgram | Contient les méthodes de point d’entrée du nuanceur de vertex et de fragment (implémentation principale). |
GraphicsToolsStandardMetaProgram | Contient les méthodes de point d’entrée du nuanceur de vertex et de fragment utilisées par Unity pour l’éclairage statique (non utilisées au moment de l’exécution). |
GraphicsToolsStandardInput | Définitions d’attributs de vertex, d’interpolateurs de vertex, de textures, d’échantillonneurs de texture, de tampons de constante par matériau, de propriétés globales et de constantes. |
GraphicsToolsCommon | Méthodes et définitions réutilisables. |
Prise en charge du pipeline de rendu
Unity dispose de quelques pipelines de rendu parmi lesquels les développeurs peuvent choisir. Le système de trame Graphics Tools est conçu pour fonctionner automatiquement avec le pipeline de rendu intégré de Unity ou le Pipeline de rendu universel (URP). Il n’est pas nécessaire de changer de nuanceur en fonction du pipeline. Voici une matrice de prise en charge :
Pipeline | Prise en charge | Exceptions |
---|---|---|
Pipeline de rendu intégré | ✅ | Les « modes flous » acryliques ne sont pas pris en charge. |
Pipeline de rendu universel (URP) | ✅ | |
Pipeline de rendu haute définition (HDRP) | ❌ | |
Pipeline de rendu personnalisé | ❔ | La prise en charge dépend de la façon dont le pipeline est créé. |
Prise en charge de UnityUI
Le système de trame Graphics Tools Standard fonctionne avec le système d’interface utilisateur intégré de Unity appelé UnityUI. Le Graphics Tools/Standard Canvas
doit être utilisé pour tous les matériaux dans les canevas UnityUI.
Un canevas ou CanvasRenderer au sein de Graphics Tools invite à ajouter un ScaleMeshEffect.cs
quand il le faut :
Sur des composants UnityUI, la matrice unity_ObjectToWorld
(ou UNITY_MATRIX_M
dans URP) n’est pas la matrice de transformation de la transformation locale sur laquelle réside le composant graphique, mais celle de son canevas parent. De nombreux effets du nuanceur Graphics Tools/Standard Canvas nécessitent que l’échelle des objets soit connue. Pour résoudre ce problème, le ScaleMeshEffect.cs
stocke les informations de mise à l’échelle dans les attributs du canal UV lors de la construction du maillage de l’interface utilisateur.
Conseil
Lorsque vous utilisez un composant image Unity, il est recommandé de spécifier « Aucun (Sprite) » pour l’image source afin d’empêcher l’interface utilisateur Unity de générer des vertex supplémentaires.
Inspecteur de matériaux
Un inspecteur de matériaux personnalisé existe pour les nuanceurs Graphics Tools/Standard et Graphics Tools/Standard Canvas, appelé StandardShaderGUI.cs. L’inspecteur active/désactive automatiquement les fonctionnalités de nuanceur, en fonction de la sélection de l’utilisateur, et aide à configurer l’état de rendu. Pour plus d’informations sur chaque fonctionnalité pointez sur chaque propriété dans l’Éditeur Unity pour afficher une info-bulle.
Notes
L’interface utilisateur de l’inspecteur est dynamique. Des parties de l’interface utilisateur changeront au fur et à mesure de l’activation ou de la désactivation de fonctionnalités.
L’inspecteur peut être décomposé en quelques zones de caractéristiques, comme décrit ci-dessous.
Mode de rendu
La première partie de l’inspecteur contrôle l’état de rendu du matériau. Le Mode de rendu détermine quand et comment un matériau sera rendu. L’objectif des nuanceurs Graphics Tools/Standard
et Graphics Tools/Standard Canvas
est de mettre en miroir les modes de rendu trouvés dans le nuanceur Unity/Standard. Les nuanceurs Graphics Tools/Standard et Graphics Tools/Standard Canvas incluent également un mode de rendu Additif et un mode de rendu Personnalisé pour le contrôle utilisateur complet.
Mode de rendu | Description |
---|---|
Opaque | (Par défaut) Adapté aux objets solides normaux sans zones transparentes. |
Découpage | Permet la création d’effets transparents qui ont des bordures marquées entre les zones opaques et transparentes. Dans ce mode, il n’y a pas de zones semi-transparentes. La texture est soit 100 % opaque, soit invisible. Cela est utile lors de l’utilisation de la transparence pour créer la forme de matériaux tels que de la végétation. |
Fondu | Permet aux valeurs de transparence de faire disparaître entièrement un objet, y compris les zones lumineuses ou réflexions spéculaires qu’il peut contenir. Ce mode est utile si vous souhaitez animer un objet en le faisant apparaître ou disparaître. Il n’est pas adapté au rendu de matériaux transparents réalistes, tels que du plastique ou du verre, car les reflets et les zones lumineuses seront également fondus. |
Mode transparent | Adapté au rendu de matériaux transparents réalistes tels que le plastique clair ou le verre. Dans ce mode, le matériau lui-même prend des valeurs de transparence (en fonction du canal alpha de la texture et de l’alpha de la couleur de teinte). Toutefois, les reflets et les zones lumineuses resteront visibles en toute clarté, comme c’est le cas des matériaux transparents réels. |
Additive | Active un mode de fusion additive, qui additionne la couleur du pixel précédent avec celle du pixel actuel. Il s’agit du mode de transparence préféré pour éviter les problèmes de tri de la transparence. |
Custom | Permet le contrôle manuel de chaque aspect du mode de rendu. Pour une utilisation avancée uniquement. |
Mode d’élimination
Mode d’élimination | Description |
---|---|
Désactivé | Désactive l’élimination de visage. L’élimination ne devrait être désactivée que quand un maillage recto verso est requis. |
Front | Active l’élimination de visage. |
Précédent | (Par défaut) Active l’élimination de visage arrière. L’élimination de visage arrière doit être activée aussi souvent que possible pour améliorer les performances de rendu. |
Cartes principales
La fonction principale de cette section est de contrôler la couleur de l’albédo du matériau et les options de rendu basé sur la physique.
Pour améliorer la parité avec le nuanceur Unity Standard par pixel métallique, les valeurs de lissage, d’émission et d’occlusion peuvent tous être contrôlées via un empaquetage de canaux.
Lorsque vous utilisez un empaquetage de canaux, vous ne devez échantillonner et charger qu’une seule texture en mémoire au lieu de quatre. Lorsque vous écrivez vos cartes de texture dans un programme comme Substance ou Photoshop, vous pouvez les empaqueter manuellement comme suit :
Canal | Propriété |
---|---|
Rouge | Métallique |
Vert | Occlusion |
Bleu | Émission (nuances de gris) |
Alpha | Lissage |
La section de carte principale a également une option de mappage triplanaire et d’anticrénelage de super-échantillon. Elle contient également une option permettant d’ajouter des mappages de texture d’émission en couleur une fois la case Émission cochée.
Le mappage triplanaire est une technique permettant de texturer un maillage par programmation. Il est souvent utilisé pour des terrains, des maillages sans UV ou des formes difficiles à désenvelopper. Cette implémentation prend en charge la projection dans l’espace mondial ou local, la spécification de lissage de fusion, et la prise en charge de carte normale. Notez que chaque texture utilisée nécessite trois échantillons de texture. Utilisez-les donc avec parcimonie dans les situations critiques pour les performances.
L’anticrénelage de super-échantillon doit être utilisé sur tous les matériaux qui affichent une icône ou une image où les détails sont critiques à partir d’une certaine distance.
Options de rendu
Les options de rendu contrôlent principalement les paramètres d’éclairage d’un matériau. Cette section de matériau contient également quelques autres fonctionnalités qui contrôlent la couleur, la translucidité ou la position d’une surface. Pour plus d’informations sur l’éclairage, voir ci-dessous.
Options de Fluent
Fluent est une infrastructure de conception utilisée dans les composants d’interface utilisateur des produits Microsoft. Cette section contient quelques fonctionnalités qui permettent d’émuler les principes du système de conception Fluent sur des surfaces arbitraires. Si vous recherchez des nuanceurs Fluent sur mesure, ils se trouvent dans l’espace de noms des nuanceurs Graphics Tools/Canvas et Graphics Tools/Non-Canvas .
Options avancées
Similaire à la section avancée dans les nuanceurs intégrés de Unity. Cette section contrôle l’ordre de rendu et si des variantes d’instanciation GPU doivent être générées. De plus, il existe des supports de test de gabarit configurables pour obtenir un vaste éventail d’effets. Tels que les portails :
Éclairage
Les nuanceurs Graphics Tools/Standard et Graphics Tools/Standard Canvas utilisent une approximation simple pour l’éclairage. Étant donné que les nuanceurs ne calculent pas l’exactitude physique et la conservation d’énergie, ils s’affichent rapidement et efficacement. Blinn-Phong est la technique d’éclairage principale utilisée. Elle est mélangée avec un éclairage de Fresnel et un éclairage basé sur l’image pour se rapprocher de l’éclairage physique. Les nuanceurs prennent en charge les techniques d’éclairage suivantes :
Lumière directionnelle
Le nuanceur respecte la direction, la couleur et l’intensité de la première lumière directionnelle Unity dans la scène (si elle est activée).
Important
Les lumières ponctuelles dynamiques, les projecteurs, ou toute autre lumière Unity ne seront pas prises en compte dans l’éclairage en temps réel. Les masques de lumière ne sont pas pris en charge pour le moment.
Harmoniques sphériques
Le nuanceur utilise des sondes de lumière pour se rapprocher des lumières de la scène à l’aide d’harmoniques sphériques, si elles sont activées.
Important
Les calculs d’harmoniques sphériques sont effectués par vertex, et les sondes de lumière ne sont pas fusionnées pour réduire les coûts de calcul.
Texturage de lumière
Pour l’éclairage statique, le nuanceur respectera les textures de lumière générées par le système de texturage de lumière de Unity. Marquez le convertisseur comme statique (ou texture de lumière statique) pour utiliser des textures de lumière.
Performances
L’un des principaux avantages de l’utilisation du système de trame standard Graphics Tools sur le nuanceur Unity Standard est celui des performances. Les nuanceurs Graphics Tools/Standard et Graphics Tools/Standard Canvas sont architecturés pour utiliser uniquement les fonctionnalités activées. Toutefois, les nuanceurs Graphics Tools/Standard et Graphics Tools/Standard Canvas ont également été écrits pour fournir des résultats esthétiques comparables à ceux du nuanceur Unity Standard, mais son coût est sensiblement moindre. Une façon simple de comparer les performances du nuanceur consiste à utiliser le nombre d’opérations qui doivent être effectuées sur le GPU. L’ampleur des calculs peut varier selon les fonctionnalités activées et d’autres configurations de rendu.
Conseil
En règle générale, vous devez utiliser le nuanceur Graphics Tools Standard sur des nuanceurs intégrés sur des appareils mobiles de réalité mixte. Toutefois, il est toujours judicieux de profiler votre scénario avec des outils tels que RenderDoc.