Nuanceur standard MRTK2

Exemples de nuanceur standard

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.

Galerie de matériaux

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/.

Comparaison des matériaux

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.

Inspecteur de matériaux

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.

Modes de rendu

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

Statistiques du nuanceur Standard Unity

Exemple de statistiques de nuanceur MRTK Standard

Statistiques du nuanceur standard MRTK

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

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

mise à niveau de lwrp

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 :

effet de maillage de mise à l’échelle

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 :

exemple de mappage 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

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 :

exemple de combinateur de textures

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

découpage primitif

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/.

Contour de maillage

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 :

Matériau du contour de maillage
  1. É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.
  2. Extrusion de vertex : doit être activée pour afficher le contour.
  3. 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 parMeshSmoother.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é.

Contour des normales lisses
  1. Normales lisses générées via MeshSmoother.cs.
  2. 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 :

Test de gabarit

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 :

propriétés instance

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.

triplanar

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.

échelle de carte normale 1

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 :

affectation albedo

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.

échelle de carte normale 2

Voir aussi