MrTK Standard-shader

Voorbeelden van standard-shader

Het MRTK Standard-arceringssysteem maakt gebruik van één flexibele shader die visuals kan bereiken die vergelijkbaar zijn met de Standard Shader van Unity, Fluent Design-systeem-principes implementeren en presteren op mixed reality-apparaten.

Voorbeeldscènes

U vindt de voorbeelden van shadermateriaal 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

U kunt een vergelijkingsscène vinden om de MRTK/Standard-shader te vergelijken met het Unity/Standard-shadervoorbeeld in de scène StandardMaterialComparison onder MRTK/Examples/Demos/StandardShader/Scenes/ .

Materiaalvergelijking

Architectuur

Het MRTK/Standard-arceringssysteem is een uber-shader die gebruikmaakt van de variantfunctie voor het shaderprogramma van Unity om automatisch optimale shadercode te genereren op basis van materiaaleigenschappen. Wanneer een gebruiker materiaaleigenschappen selecteert in de materiaalinspectur, worden er alleen prestatiekosten in de kosten voor functies die ze hebben ingeschakeld.

Materiaalinspecteur

Er bestaat een aangepaste materiaalinspecteur voor de MRTK/Standard-shader met de naam MixedRealityStandardShaderGUI.cs . De inspector schakelt automatisch shaderfuncties in/uit, op basis van gebruikersselectie en hulp bij het instellen van de render-status. Beweeg de muisaanwijzer over elke eigenschap in de Unity Editor voor knopinfo voor meer informatie over elke functie.

Materiaalcontrole

Het eerste gedeelte van de inspector bepaalt de render-status 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 gebruikersbeheer.

Renderingmodus Description
Ondoorzichtig (Standaard) Geschikt voor normale, solide objecten 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 semi-transparante gebieden. Het patroon is 100% ondoorzichtig of onzichtbaar. Dit is handig bij het gebruik van transparantie om de vorm van materialen te maken, zoals planten.
Fade Hiermee kunnen de transparantiewaarden een object volledig uitfaden, met inbegrip van eventuele speculaire highlights of reflecties. Deze modus is handig als u een object van een animatie wilt maken. Het is niet geschikt voor het weergeven van realistische transparante materialen, zoals doorzichtige plastic of glass, omdat de reflecties en highlights ook vervaagd zullen zijn.
Transparant Geschikt voor het weergeven van realistische transparante materialen, zoals doorzichtige plastic of glasvezel. In deze modus krijgt het materiaal zelf transparantiewaarden (op basis van het alfakanaal van het patroon en de alfa van de tintkleur). Reflecties en belichtingslichtjes blijven echter voor volledige duidelijkheid zichtbaar, zoals het geval is bij echte transparante materialen.
Additief Hiermee schakelt u een additieve combinatiemodus in, waarmee de vorige pixelkleur wordt opgeteld met de huidige pixelkleur. Dit is de voorkeurstransparantiemodus om problemen met het sorteren van transparantie te voorkomen.
Aangepast Hiermee kan elk aspect van de renderingsmodus handmatig worden beheerd. Alleen voor geavanceerd gebruik.

Renderingmodi

Cull Mode Description
Aan Hiermee schakelt u gezichtsherkenning uit. Het gebruik van een mesh met twee zijden mag alleen worden ingesteld op Uit als een mesh met twee zijden is vereist.
Front Maakt gezichtsherkenning mogelijk.
Terug (Standaard) Hiermee schakelt u het maken van gezichtsherkenning in. Back face-herkenning 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 Standaard-shader van Unity zijn de prestaties. De MRTK Standard Shader kan worden gebruikt om alleen de functies te gebruiken die zijn ingeschakeld. De MRTK Standard-shader is echter ook geschreven om vergelijkbare vormgevingsresultaten 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 op de GPU moet worden uitgevoerd. De omvang van berekeningen kan natuurlijk variëren door functies die zijn ingeschakeld en andere renderingconfiguraties. Over het algemeen voert de MRTK Standard-shader echter aanzienlijk minder berekeningen uit dan de Unity Standard-shader.

Voorbeeld van statistieken van Unity Standard-shader

Unity Standard Shader Statistics

Voorbeeld van statistieken voor mrtk-standaard shader

Statistieken van MRTK Standard Shader

Notitie

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

Belichting

De MRTK/Standard maakt gebruik van een eenvoudige benadering voor belichting. Omdat deze shader niet wordt berekend op fysieke juistheid en energieherstel, wordt deze snel en efficiënt weergegeven. Blinn-Phong is de primaire belichtingstechniek die wordt gecombineerd met Belichting op basis van afbeeldingen en bij benadering fysiek gebaseerde belichting. De shader ondersteunt de volgende belichtingstechnieken:

Directioneel licht

De shader respecteert de richting, kleur en intensiteit van het eerste Unity Directional Light in de scène (indien ingeschakeld). Dynamische point lights, spot lights of een ander Unity-licht worden niet in realtime belicht.

Sferische perken

De shader gebruikt lichttests om lampen in de scène te benaderen met behulp van SphericalIeks,indien ingeschakeld. Per hoekpunt worden sferische berekeningen uitgevoerd om de berekeningskosten te verlagen.

Lightmapping

Voor statische belichting respecteert de shader lightmaps die zijn gebouwd door het Lightmapping-systeem vanUnity. Markeer de renderer gewoon als statisch (of lightmap static) om lightmaps te gebruiken.

De muisaanwijzer aanwijzen

Nabijheidslicht

Ondersteuning voor Lightweight Scriptable Render Pipeline

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

Als u de MRTK-upgrade wilt uitvoeren, selecteert u: Mixed Reality Toolkit -> Utilities -> Upgrade MRTK Standard Shader for Lightweight Render Pipeline

lwrp-upgrade

Nadat de upgrade is uitgevoerd, wordt de MRTK/Standard-shader gewijzigd en moeten magenta-materialen (shaderfout) worden opgelost. Als u wilt controleren of de upgrade is uitgevoerd, controleert u de console op: Upgrade 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 Unity UI-onderdelen is de unity_ObjectToWorld matrix niet de transformatiematrix van de lokale transformatie die het onderdeel Afbeelding gebruikt, maar die van het bovenliggende canvas. Voor veel mrtk-/standaard shader-effecten is vereist dat de schaal van objecten bekend is. Om dit probleem op te lossen, wordt informatie over het ScaleMeshEffect.cs schalen opgeslagen in KENMERKEN van het UV-kanaal tijdens het bouwen van de UI-mesh.

Opmerking: wanneer u een Unity Image-onderdeel gebruikt, is het raadzaam om 'Geen (Sprite)' op te geven voor de bronafbeelding om te voorkomen dat de Gebruikersinterface van Unity extra vertices genereert.

Een canvas in de MRTK vraagt om de toevoeging van een ScaleMeshEffect.cs wanneer er een vereist is:

mesh-effect schalen

Combinatie van texturen

Als u de pariteit wilt verbeteren met de Unity Standard-shader per pixel,kunnen de waarden voor vloeiendheid, emulatie en occlusie allemaal worden beheerd via kanaalverpakking. Bijvoorbeeld:

voorbeeld van kanaalkaart

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

Kanaal Eigenschap
Red Metalen
Green Occlusie
Blue Man (grijstinten)
Alpha Gladheid

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

voorbeeld van een combinatie van texturen

Dit venster kan automatisch worden ingevuld door een Unity Standard-shader te selecteren en te klikken op Autopopulate from Standard Material. U kunt ook handmatig een patroon (of constante waarde) per rood, groen, blauw of alfakanaal opgeven. De combinatie van patroon is GPU-versneld en vereist niet dat het invoertextuur CPU toegankelijk is.

Aanvullende functiedocumentatie

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

Primitief knippen

primitief knippen

Mesh-overzichten

Veel mesh outline-technieken worden uitgevoerd met behulp van een techniek voor naverwerking. Naverwerking biedt uitstekende kwaliteitsoverzichten, maar kan duur zijn op veel Mixed Reality apparaten. U vindt een scène die het gebruik van mesh-contouren demonstreert in de scène OutlineExamples onder MRTK/Examples/Demos/StandardShader/Scenes/ .

Mesh Outline

MeshOutline.cs en MeshOutlineHierarchy.cs kunnen worden gebruikt om een omtrek rond een mesh-renderer weer te geven. Het inschakelen van dit onderdeel introduceert een extra render pass van het object dat wordt beschreven, maar is ontworpen om goed 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 waterzichtig zijn (of tweezijdige moeten zijn) en problemen met het sorteren van diepte op overlappende objecten.

Het omtrekgedrag is ontworpen om te worden gebruikt in combinatie met de MRTK/Standard-shader. Omtrekmaterialen zijn doorgaans een effen, niet-gesneden kleur, maar kunnen worden geconfigureerd om een breed scala aan effecten te bereiken. De standaardconfiguratie van een omtrekmateriaal is als volgt:

Mesh Outline Material
  1. Diepte schrijven: moet worden uitgeschakeld voor omtrekmateriaal om ervoor te zorgen dat de omtrek niet voorkomt dat andere objecten worden gerenderd.
  2. Hoekpuntextrusie: moet zijn ingeschakeld om de omtrek weer te geven.
  3. Smooth Normals gebruiken: deze instelling is optioneel voor sommige meshes. De extrusie treedt op door een hoekpunt normaal langs een hoekpunt te verplaatsen. Bij sommige meshes die langs de standaardnorm worden weergegeven, ontstaan er afzettingen in de omtrek. Als u deze verschillen wilt oplossen, kunt u dit selectievakje in als u een andere set vloeiende normalen wilt gebruiken die worden gegenereerd door MeshSmoother.cs

MeshSmoother.cs is een onderdeel dat kan worden gebruikt om automatisch vloeiende normalen op een mesh te genereren. Deze methode groepeert de vertices in een mesh die dezelfde locatie in ruimte delen, en gemiddelden van deze vertices. Met dit proces maakt u een kopie van de onderliggende mesh en mag deze alleen worden gebruikt wanneer dat nodig is.

Smooth Normals Outline
  1. Vloeiende normalen die worden gegenereerd via MeshSmoother.cs .
  2. Als de standaardnorm wordt gebruikt, ziet u de artefacten rond de kubushoeken.

Stencil testen

Ingebouwde configureerbare ondersteuning voor stenciltests om een breed scala aan effecten te bereiken. Zoals portals:

stencil-test

Ondersteuning voor exemplaarkleur

Ondersteuning voor exemplaarkleur om duizenden meshes met GPU-exemplaren unieke materiaaleigenschappen te geven:

instantie-eigenschappen

Triplanar-toewijzing

Triplanartoewijzing is een techniek voor het programmatisch patroon van een mesh. Wordt vaak gebruikt in een auto, meshes zonder UV's of moeilijk om vormen uit te pakken. Deze implementatie ondersteunt projectie van de wereld of lokale ruimte, de specificatie van vloeiende combinatie en normale kaartondersteuning. Houd er rekening mee dat voor elk patroon dat wordt gebruikt, drie patroonvoorbeelden zijn vereist. Gebruik daarom spaarzaam in kritieke situaties met prestaties.

triplanar

Hoekpuntextrusie

Hoekpuntextrusie in de wereldruimte. Handig voor het visualiseren van de extruded begrenizingsvolumes of overgangen in/uit meshes.

normale kaartschaal 1

Diversen

Een selectievakje voor het beheer van albedo-optimalisaties. Als optimalisatie worden albedo-bewerkingen uitgeschakeld wanneer er geen albedo-patroon is opgegeven. Dit is handig voor het beheren van het extern laden van texturen.

Vink dit selectievakje gewoon aan:

albedo-toewijzing

Kniptexturen per pixel, antialiassen op basis van lokale randen en normale kaartschalen worden ondersteund.

normale kaartschaal 2

Zie ook