Nuanceur standard MRTK2
Le système d’ombrage MRTK2 Standard utilise un nuanceur unique et flexible qui peut obtenir des visuels similaires au nuanceur standard d’Unity, implémenter Système Fluent Design principes et rester performant sur les appareils de réalité mixte.
Exemples de scènes
Vous trouverez les exemples de matériaux de nuanceur dans la scène MaterialGallery sous MRTK/Examples/Demos/StandardShader/Scenes/
. Tous les matériaux de cette scène utilisent le nuanceur MRTK/Standard.
Vous trouverez une scène de comparaison pour comparer et tester le nuanceur MRTK/Standard par rapport à l’exemple de nuanceur Unity/Standard dans la scène StandardMaterialComparison sous MRTK/Examples/Demos/StandardShader/Scenes/
.
Architecture
Le système d’ombrage MRTK/Standard est un « nuanceur uber » qui utilise la fonctionnalité de variante du programme de nuanceur d’Unity pour générer automatiquement un code de nuanceur optimal en fonction des propriétés matérielles. Lorsqu’un utilisateur sélectionne des propriétés matérielles dans l’inspecteur de matériaux, elles entraînent uniquement des coûts de performances pour les fonctionnalités qu’il a activées.
Inspecteur de matériaux
Il existe un inspecteur de matériaux personnalisé pour le nuanceur MRTK/Standard appelé MixedRealityStandardShaderGUI.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 obtenir une info-bulle.
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 du nuanceur MRTK/Standard est de miroir les modes de rendu trouvés dans le nuanceur Unity/Standard. Le nuanceur MRTK/Standard inclut également un mode de rendu additive et un mode de rendu personnalisé pour un 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 d’effacer entièrement un objet, y compris les surbrillances spéculaires ou les réflexions qu’il peut avoir. Ce mode est utile si vous souhaitez animer un objet qui s’évanouit ou s’évanouit. Il ne convient pas pour le rendu de matériaux transparents réalistes tels que le plastique transparent ou le verre, car les reflets et les reflets seront également effacés. |
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 | 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. |
Performances
L’un des principaux avantages de l’utilisation du nuanceur MRTK Standard par rapport au nuanceur standard Unity est les performances. Le nuanceur MRTK Standard est extensible pour utiliser uniquement les fonctionnalités activées. Cependant, le nuanceur MRTK Standard a également été écrit pour fournir des résultats esthétiques comparables à ceux du nuanceur Unity Standard, mais à un coût beaucoup plus faible. Un moyen simple de comparer les performances du nuanceur consiste à utiliser le nombre d’opérations à effectuer sur le GPU. Bien sûr, l’ampleur des calculs peut fluctuer en fonction des fonctionnalités activées et d’autres configurations de rendu. Mais, en général, le nuanceur MRTK Standard effectue beaucoup moins de calculs que le nuanceur Unity Standard.
Exemple de statistiques de nuanceur Unity Standard
Exemple de statistiques de nuanceur MRTK Standard
Notes
Ces résultats peuvent être générés en sélectionnant et en affichant une ressource de nuanceur dans l’inspecteur Unity, puis en cliquant sur le bouton Compiler et afficher le code .
Éclairage
Le MRTK/Standard utilise une approximation simple pour l’éclairage. Comme ce nuanceur ne calcule pas l’exactitude physique et la conservation de l’énergie, il effectue un rendu rapide et efficace. Blinn-Phong est la technique d’éclairage primaire qui est mélangée à Fresnel et à l’éclairage basé sur l’image pour un éclairage basé sur des physiques approximatifs. Le nuanceur prend 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). Les points lumineux dynamiques, les spots lumineux ou toute autre lumière Unity ne seront pas pris en compte dans l’éclairage en temps réel.
Harmoniques sphériques
Le nuanceur utilise des sondes de lumière pour estimer les lumières de la scène à l’aide de sphériques harmoniques, si cette option est activée. Les calculs d’harmoniques sphériques sont effectués par sommet pour réduire le coût de calcul.
Texturage de lumière
Pour l’éclairage statique, le nuanceur respectera les lightmaps créés par le système Lightmapping d’Unity. Marquez simplement le convertisseur comme statique (ou statique de lightmap) pour utiliser des lightmaps.
Lumière lointaine
Lumière proche
- Voir Lumière de proximité
Prise en charge du pipeline de rendu avec script léger
Le MRTK contient un chemin de mise à niveau pour permettre aux développeurs d’utiliser le pipeline de rendu léger scriptable (LWRP) d’Unity avec des nuanceurs MRTK. Testé dans le package Unity 2019.1.1f1 et Lightweight RP 5.7.2. Pour obtenir des instructions sur la prise en main du LWRP, consultez cette page.
Pour effectuer la mise à niveau MRTK, sélectionnez : Mixed Reality Toolkit -> Utilitaires -> Mettre à niveau MRTK Standard Shader for Lightweight Render Pipeline
Une fois la mise à niveau effectuée, le nuanceur MRTK/Standard est modifié et tous les matériaux magenta (erreur de nuanceur) doivent être corrigés. Pour vérifier que la mise à niveau s’est correctement produite, case activée la console pour : Upgraded Assets/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader pour une utilisation avec le pipeline de rendu léger.
Prise en charge D’UGUI
Le système d’ombrage MRTK Standard fonctionne avec le système d’interface utilisateur intégré d’Unity. Sur les composants d’interface utilisateur Unity, la matrice unity_ObjectToWorld n’est pas la matrice de transformation de la transformation locale sur laquelle réside le composant Graphic, mais celle de son canevas parent. De nombreux effets de nuanceur MRTK/Standard nécessitent la mise à l’échelle de l’objet pour être connus. 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.
Notez que lors de l’utilisation d’un composant Image Unity, il est recommandé de spécifier « None (Sprite) » pour l’image source afin d’empêcher l’interface utilisateur Unity de générer des sommets supplémentaires.
Un canevas dans MRTK demande l’ajout d’un ScaleMeshEffect.cs
lorsque celui-ci est requis :
Combinateur de textures
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. Par exemple :
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 |
Vous pouvez également utiliser l’outil de combinaison de textures MRTK. Pour ouvrir l’outil, sélectionnez : Mixed Reality Toolkit -> Utilitaires -> Combineur de textures qui ouvre la fenêtre ci-dessous :
Cette fenêtre peut être remplie automatiquement en sélectionnant un nuanceur Unity Standard et en cliquant sur « Remplir automatiquement à partir d’un matériau standard ». Vous pouvez également spécifier manuellement une texture (ou une valeur constante) par canal rouge, vert, bleu ou alpha. La combinaison de textures est accélérée par GPU et ne nécessite pas que la texture d’entrée soit accessible par le processeur.
Documentation sur les fonctionnalités supplémentaires
Vous trouverez ci-dessous des détails supplémentaires sur quelques fonctionnalités disponibles avec le nuanceur MRTK/Standard.
Découpage primitif
- Voir Clipping Primitive
Contours de maillage
De nombreuses techniques de contour de maillage sont élaborées à l’aide d’une technique de post-traitement. Le post-traitement fournit des contours de grande qualité, mais peut être prohibitif sur de nombreux appareils Mixed Reality. Vous trouverez une scène qui illustre l’utilisation des contours de maillage dans la scène OutlineExamples sous MRTK/Examples/Demos/StandardShader/Scenes/
.
MeshOutline.cs
et MeshOutlineHierarchy.cs
peuvent être utilisés pour afficher un plan autour d’un convertisseur de maillage. L’activation de ce composant introduit une passe de rendu supplémentaire de l’objet décrit, mais est conçu pour s’exécuter efficacement sur les appareils Mixed Reality mobiles et n’utilise aucun post-processus. Les limitations de cet effet sont qu’il ne fonctionne pas correctement sur des objets qui ne sont pas étanches (ou qui doivent avoir deux faces), et que des problèmes de tri en profondeur peuvent survenir sur des objets qui se chevauchent.
Les comportements hiérarchiques sont conçus pour être utilisés conjointement avec le nuanceur MRTK/Standard. Les matériaux de contour sont généralement une couleur unie non éclairée, mais peuvent être configurés pour obtenir un large éventail d’effets. La configuration par défaut d’un matériau de plan est la suivante :
- Écriture en profondeur : doit être désactivée pour les matériaux hiérarchiques afin de s’assurer que le plan n’empêche pas le rendu d’autres objets.
- Extrusion de vertex : doit être activée pour afficher le contour.
- Utiliser des normales lisses : ce paramètre est facultatif pour certains maillages. Une extrusion se produit en déplaçant un vertex le long d’une normale de vertex. Sur certains maillages, une extrusion le long des normales par défaut entraîne des discontinuités dans le contour. Pour corriger ces discontinuités, vous pouvez case activée cette zone pour utiliser un autre ensemble de normales lissées qui sont générées par
MeshSmoother.cs
MeshSmoother.cs
est un composant qui peut être utilisé pour générer automatiquement des normales lissées sur un maillage. Cette méthode regroupe les vertex dans un maillage, qui partagent le même emplacement dans l’espace, puis calcule une moyenne des normales de ces vertex. Ce processus crée une copie du maillage sous-jacent et ne devrait être utilisé qu’en cas de nécessité.
- Normales lisses générées via
MeshSmoother.cs
. - Normales par défaut utilisées, notez les artefacts autour des coins du cube.
Test de gabarit
Prise en charge des tests de gabarit configurables pour obtenir un large éventail d’effets. Tels que les portails :
Prise en charge des couleurs instance
Prise en charge des couleurs instance pour donner des milliers de maillages instanceux GPU aux propriétés de matériau uniques :
Mappage triplanaire
Le mappage triplanaire est une technique permettant de texturer un maillage par programmation. Souvent utilisés en terrain, des maillages sans UVs ou des formes difficiles à démêler. 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 3 exemples de texture. Utilisez donc avec parcimonie dans les situations critiques de performances.
Extrusion de vertex
Extrusion de vertex dans l’espace mondial. Utile pour visualiser les volumes englobants extrudés ou les transitions de maillages entrants/sortants.
Divers
Case à cocher pour contrôler les optimisations albedo. En tant qu’optimisation, les opérations albedo sont désactivées quand aucune texture albedo n’est spécifiée. Cela est utile pour contrôler le chargement de textures à distance.
Il vous suffit de case activée cette zone :
Les textures de découpage par pixel, l’anti-alias basé sur les bords locaux et la mise à l’échelle normale de la carte sont prises en charge.