MRTK2 standaard shader

Voorbeelden van standaard shader

Het MRTK2 Standard-arceringssysteem maakt gebruik van één flexibele arcering die visuele elementen kan bereiken die vergelijkbaar zijn met de Standard Shader van Unity, Fluent Design-systeem principes kan implementeren en prestaties kan blijven leveren op mixed reality-apparaten.

Voorbeeldscènes

U vindt de voorbeelden van arceringsmateriaal in de scène MaterialGallery onder MRTK/Examples/Demos/StandardShader/Scenes/. Alle materialen in deze scène maken gebruik van de MRTK/Standard-shader.

Materiaalgalerie

In de scène StandardMaterialComparison vindt u een vergelijkingsscène om de MRTK/Standard-shader te vergelijken en te testen aan MRTK/Examples/Demos/StandardShader/Scenes/de hand van het Unity/Standard-arceringsvoorbeeld.

Materiaalvergelijking

Architectuur

Het MRTK/Standard arceringssysteem is een 'uber shader' die gebruikmaakt van unity's shader-programmavariant om automatisch optimale shadercode te genereren op basis van materiaaleigenschappen. Wanneer een gebruiker materiaaleigenschappen selecteert in de materiaalcontrole, worden alleen prestatiekosten in rekening gebracht voor functies die ze hebben ingeschakeld.

Materiaalcontrole

Er bestaat een aangepaste materiaalcontrole voor de MRTK/Standard-shader met de naam MixedRealityStandardShaderGUI.cs. De inspector schakelt automatisch arceringsfuncties in of uit op basis van de selectie van de gebruiker en assistenten bij het instellen van de renderstatus. Voor meer informatie over elke functie plaatst u de muisaanwijzer op elke eigenschap in de Unity-editor voor knopinfo.

Materiaalcontrole

Het eerste gedeelte van de inspector bepaalt de renderstatus van het materiaal. De renderingmodus bepaalt wanneer en hoe een materiaal wordt weergegeven. Het doel van de MRTK/Standard-shader is om de renderingmodi in de Unity/Standard-shader te spiegelen. De MRTK/Standard-shader bevat ook een additieve renderingmodus en aangepaste renderingmodus voor volledig beheer door de gebruiker.

Renderingmodus Beschrijving
Ondoorzichtig (Standaard) Geschikt voor normale vaste voorwerpen zonder transparante gebieden.
Knipsel Hiermee kunt u transparante effecten maken met harde randen tussen de ondoorzichtige en transparante gebieden. In deze modus zijn er geen semitransparante gebieden, het patroon is 100% ondoorzichtig of onzichtbaar. Dit is handig bij het gebruik van transparantie om de vorm van materialen, zoals vegetatie, te creëren.
Fade Hiermee kunnen de doorzichtigheidswaarden een object volledig uitfaden, inclusief eventuele speculaire markeringen of weerspiegelingen. Deze modus is handig als u animatie wilt toepassen op een object dat in- of uitfadeert. Het is niet geschikt voor het weergeven van realistische transparante materialen zoals doorzichtige kunststof of glas, omdat ook de reflecties en highlights worden vervaagd.
Transparant Geschikt voor het weergeven van realistische transparante materialen zoals doorzichtige kunststof of glas. In deze modus neemt het materiaal zelf doorzichtigheidswaarden aan (gebaseerd op het alfakanaal van de textuur en de alfa van de tintkleur). Reflecties en lichtlichten blijven echter op volledige helderheid zichtbaar, zoals het geval is bij echte transparante materialen.
Additief Hiermee schakelt u een additieve overvloeimodus in, waarbij de vorige pixelkleur wordt opgeteld met de huidige pixelkleur. Dit is de voorkeursmodus voor transparantie om problemen met het sorteren van transparantie te voorkomen.
Aangepast telefoonnummer Hiermee kunt u elk aspect van de renderingmodus handmatig beheren. Alleen voor geavanceerd gebruik.

Renderingmodi

Ruimingsmodus Beschrijving
Aan Hiermee schakelt u gezichtsverruiming uit. Ruimen mag alleen worden ingesteld op Uit wanneer een tweezijdig gaas vereist is.
Front Hiermee kunt u front-face-afslaching inschakelen.
Terug (Standaard) Hiermee schakelt u het ruimen van de achterkant van het gezicht in. Afslaching van achteren moet zo vaak mogelijk worden ingeschakeld om de renderingprestaties te verbeteren.

Prestaties

Een van de belangrijkste voordelen van het gebruik van de MRTK Standard-shader ten opzichte van de Unity Standard-shader zijn de prestaties. De MRTK Standard Shader kan worden uitgebreid om alleen de ingeschakelde functies te gebruiken. De MRTK Standard-shader is echter ook geschreven om vergelijkbare esthetische resultaten te leveren als de Unity Standard-shader, maar tegen veel lagere kosten. Een eenvoudige manier om de prestaties van de shader te vergelijken, is via het aantal bewerkingen dat moet worden uitgevoerd op de GPU. Natuurlijk kan de omvang van berekeningen fluctueren door ingeschakelde functies en andere renderingconfiguraties. Maar over het algemeen voert de MRTK Standard-shader aanzienlijk minder berekeningen uit dan de Unity Standard-shader.

Voorbeeld van Unity Standard-arceringsstatistieken

Statistieken van Unity Standard Shader

Voorbeeld van MRTK Standard-arceringsstatistieken

MRTK Standard Shader Statistics

Notitie

Deze resultaten kunnen worden gegenereerd door een shader-asset te selecteren en weer te geven in de Unity-inspector en vervolgens op de knop Code compileren en weergeven te klikken.

Belichting

De MRTK/Standaard maakt gebruik van een eenvoudige benadering voor verlichting. Omdat deze shader niet berekent voor fysieke correctheid en energiebesparing, wordt deze snel en efficiënt weergegeven. Blinn-Phong is de primaire verlichtingstechniek die wordt vermengd met Fresnel en op afbeeldingen gebaseerde verlichting tot een benadering van fysieke verlichting. De shader ondersteunt de volgende belichtingstechnieken:

Directioneel licht

De arcering respecteert de richting, kleur en intensiteit van het eerste unity directionele licht in de scène (indien ingeschakeld). Dynamische puntlichten, spotlichten of andere Unity-lichten worden niet beschouwd in realtime verlichting.

Sferische harmonischen

De arcering gebruikt lichttests om de lichten in de scène te benaderen met behulp van sferische harmonischen, indien ingeschakeld. Sferische harmonische berekeningen worden per hoekpunt uitgevoerd om de berekeningskosten te verlagen.

Lichtmapping

Voor statische verlichting respecteert de shader lightmaps die zijn gebouwd door het Lightmapping-systeem van Unity. Markeer de renderer als statisch (of lightmap statisch) om lightmaps te gebruiken.

Lampje aanwijzen

Nabijheidslicht

Ondersteuning voor lichtgewicht scriptbare renderpijplijnen

De MRTK bevat een upgradepad waarmee ontwikkelaars de Lightweight Scriptable Render Pipeline (LWRP) van Unity kunnen gebruiken met MRTK-shaders. Getest in unity 2019.1.1f1- en Lightweight RP 5.7.2-pakket. Zie deze pagina voor instructies om aan de slag te gaan met de LWRP.

Als u de MRTK-upgrade wilt uitvoeren, selecteert u: Mixed Reality Toolkit -> Hulpprogramma's -> MRTK Standard Shader upgraden voor Lightweight Render Pipeline

Lwrp-upgrade

Nadat de upgrade is uitgevoerd, wordt de MRTK/Standard-shader gewijzigd en moeten alle magenta-materialen (shader-fout) worden opgelost. Als u wilt controleren of de upgrade is uitgevoerd, controleert u de console op: Upgraded Assets/MixedRealityToolkit/StandardAssets/Shaders/MixedRealityStandard.shader voor gebruik met de Lightweight Render Pipeline.

UGUI-ondersteuning

Het MRTK Standard-arceringssysteem werkt met het ingebouwde UI-systeem van Unity. In onderdelen van de Unity-gebruikersinterface is de unity_ObjectToWorld matrix niet de transformatiematrix van de lokale transformatie waarop het onderdeel Graphic zich bevindt, maar die van het bovenliggende canvas. Veel MRTK-/Standard-arceringseffecten vereisen dat de objectschaal bekend is. Om dit probleem op te lossen, slaat de schaalgegevens op in UV-kanaalkenmerken tijdens het ScaleMeshEffect.cs bouwen van de ui-mesh.

Opmerking: wanneer u een Unity Image-onderdeel gebruikt, is het raadzaam om 'Geen (Sprite)' op te geven voor de broninstallatiekopieën om te voorkomen dat de Unity-gebruikersinterface extra hoekpunten genereert.

Een canvas in MRTK vraagt om het toevoegen van een ScaleMeshEffect.cs wanneer dit vereist is:

mesh-effect schalen

Patrooncombinatie

Om de pariteit met de Unity Standard-shader per pixel metallic te verbeteren, kunnen gladheid, emissive en occlusiewaarden allemaal worden geregeld via kanaalverpakking. Bijvoorbeeld:

voorbeeld van kanaalkaart

Wanneer u kanaalverpakking gebruikt, hoeft u slechts één patroon te nemen en in het geheugen te laden in plaats van vier afzonderlijke patronen. Wanneer u uw patroonkaarten schrijft in een programma zoals Substance of Photoshop, kunt u ze als volgt met de hand inpakken:

Kanaal Eigenschap
Red Metalen
Green Occlusie
Blue Emissie (grijswaarden)
Alpha Gladheid

U kunt ook de MRTK Texture Combiner Tool gebruiken. Als u het hulpprogramma wilt openen, selecteert u: Mixed Reality Toolkit -> Hulpprogramma's -> Texture Combiner, waarmee het onderstaande venster wordt geopend:

voorbeeld van patrooncombinatie

Dit venster kan automatisch worden ingevuld door een Unity Standard-arcering te selecteren en te klikken op 'Automatisch invullen van standaardmateriaal'. U kunt ook handmatig een patroon (of constante waarde) opgeven per rood, groen, blauw of alfakanaal. De textuurcombinatie is GPU versneld en vereist niet dat het invoerpatroon CPU-toegankelijk is.

Aanvullende documentatie over functies

Hieronder vindt u extra informatie over een aantal functiedetails die beschikbaar zijn met de MRTK/Standard-shader.

Primitieve knipsel

primitieve knipsel

Mesh-contouren

Veel mesh-overzichtstechnieken worden uitgevoerd met behulp van een naverwerkingstechniek . Naverwerking biedt hoogwaardige overzichten, maar kan op veel Mixed Reality apparaten onbetaalbaar zijn. U vindt een scène waarin het gebruik van mesh-contouren wordt gedemonstreerd in de scène OverzichtVoorbeelden onder MRTK/Examples/Demos/StandardShader/Scenes/.

Omtrek van mesh

MeshOutline.cs en MeshOutlineHierarchy.cs kan worden gebruikt om een omtrek rond een mesh-renderer weer te geven. Als u dit onderdeel inschakelt, wordt een extra weergave-pass van het object dat wordt beschreven, geïntroduceerd, maar het is ontworpen om te worden uitgevoerd op mobiele Mixed Reality apparaten en maakt geen gebruik van postprocessen. Beperkingen van dit effect zijn onder andere dat het niet goed werkt op objecten die niet waterdicht zijn (of dubbelzijdig moeten zijn) en problemen met dieptesortering kunnen optreden bij overlappende objecten.

Het overzichtsgedrag is ontworpen om te worden gebruikt in combinatie met de MRTK/Standard-shader. Contourmaterialen zijn meestal een effen onverlichte kleur, maar kunnen worden geconfigureerd om een breed scala aan effecten te bereiken. De standaardconfiguratie van een overzichtsmateriaal is als volgt:

Mesh-omtrekmateriaal
  1. Diepte schrijven: moet worden uitgeschakeld voor overzichtsmaterialen om ervoor te zorgen dat het overzicht niet verhindert dat andere objecten worden weergegeven.
  2. Hoekpuntextrusie: moet worden ingeschakeld om het overzicht weer te geven.
  3. Gebruik Smooth Normals - deze instelling is optioneel voor sommige meshes. Extrusie treedt op door een hoekpunt langs een normaal hoekpunt te verplaatsen, op sommige meshes extrusie langs de standaard normals zal discontinuïteiten in de omtrek veroorzaken. Als u deze discontinuïteiten wilt oplossen, kunt u dit selectievakje inschakelen om een andere reeks vloeiende normaalheden te gebruiken die worden gegenereerd door MeshSmoother.cs

MeshSmoother.cs is een onderdeel dat kan worden gebruikt om automatisch vloeiende normaals op een mesh te genereren. Met deze methode worden hoekpunten gegroepeerd in een mesh die dezelfde locatie in de ruimte delen, waarna het gemiddelde van de normaalheden van deze hoekpunten wordt berekend. Met dit proces maakt u een kopie van de onderliggende mesh en mag deze alleen worden gebruikt wanneer dat nodig is.

Vloeiende normale contouren
  1. Smooth normals gegenereerd via MeshSmoother.cs.
  2. Standaardwaarden die worden gebruikt, let op de artefacten rond de kubushoeken.

Stencil testen

Ingebouwde configureerbare testondersteuning voor stencils om een breed scala aan effecten te bereiken. Zoals portals:

stenciltest

Ondersteuning voor instantiekleur

Ondersteuning voor instantiekleur om duizenden door GPU uitgevoerde meshes unieke materiaaleigenschappen te geven:

exemplaareigenschappen

Triplanar-toewijzing

Triplanar-toewijzing is een techniek om een mesh programmatisch te structuren. Vaak gebruikt in terrein, meshes zonder UV's, of moeilijk uit te pakken vormen. Deze implementatie ondersteunt wereldwijde of lokale ruimteprojectie, de specificatie van vloeiende menging en normale kaartondersteuning. Houd er rekening mee dat voor elk gebruikt patroon 3 patroonsamples nodig zijn, dus gebruik spaarzaam in kritieke situaties met prestaties.

triplanar

Hoekpuntextrusie

Hoekpuntextrusie in de wereldruimte. Handig voor het visualiseren van geëxtrudeerde begrenzingsvolumes of overgangen in/uit meshes.

normale kaartschaal 1

Diversen

Een selectievakje om albedo-optimalisaties te beheren. Als optimalisatie worden albedo-bewerkingen uitgeschakeld wanneer er geen albedopatroon is opgegeven. Dit is handig voor het beheren van het externe laden van patronen.

Schakel dit selectievakje in:

albedo-toewijzing

Patronen voor knipsels per pixel, lokale edge-gebaseerde anti-aliasing en normale schaalaanpassing van kaarten worden ondersteund.

normale kaartschaal 2

Zie ook