Dela via


Standardskuggar för grafikverktyg – MRTK3

Skuggningssystemet Graphics Tools Standard använder en flexibel skuggning som kan uppnå visuella objekt som liknar Unitys Standard-skuggning (eller Lit). Den implementerar Fluent Design-system principer och förblir högpresterande på enheter med mixad verklighet.

Exempel på materialgalleri för standardskuggning

Exempel

Se materialgalleriexemplet för flera demonstrationer av grafikverktyg/Standard shader-varianter. Exempel på grafikverktyg/standardarbetsyta finns i UnityUI-exemplet

Arkitektur

Grafikverktyg/Standard-skuggningssystemet är en "uber shader" som använder Unitys skuggningsprogramvariantfunktion för att automatiskt generera optimal skuggningskod baserat på materialegenskaper. När en användare väljer materialegenskaper i materialkontrollen debiteras de bara prestandakostnader för funktioner som de har aktiverat.

För att bättre stödja traditionella Unity-arbetsflöden och UnityUI-arbetsflöden (arbetsytearbetsflöden) har fyllningssystemet Grafikverktyg/Standard två startpunkter för skuggning:

Kontext Standardvärde UnityUI
Name Grafikverktyg/Standard Grafikverktyg/Standard-arbetsyta
Shader GraphicsToolsStandard GraphicsToolsStandardCanvas

Båda skuggarna är mestadels identiska eftersom de delar vanlig skuggningskod. Grafikverktyg/Standard-arbetsytan innehåller viss extra logik som är specifik för UnityUI.

Följande skuggning omfattar energi för grafikverktygen/standardfyllningssystemet:

Inkludera Syfte
GraphicsToolsStandardProgram Innehåller startpunktsmetoderna för hörn och fragmentskuggning (kärnimplementeringen).
GraphicsToolsStandardMetaProgram Innehåller startpunktsmetoderna för hörn- och fragmentskuggning som används av Unity för statisk belysning (används inte vid körning).
GraphicsToolsStandardInput Definitioner för hörnattribut, hörninterpolatorer, texturer, texturexempel, per materialkonstantbuffertar, globala egenskaper och konstanter.
GraphicsToolsCommon Återanvändbara metoder och definierar.

Stöd för återgivning av pipeline

Unity har en handfull renderingspipelines som utvecklare kan välja mellan. Skuggningssystemet Graphics Tools Standard är utformat för att fungera automatiskt med Unitys inbyggda återgivningspipeline eller UNIVERSAL Render Pipeline (URP). Du behöver inte växla skuggning baserat på pipeline. Nedan visas en supportmatris:

Pipeline Stöds Undantag
Inbyggd återgivningspipeline Akryllägen för oskärpa stöds inte.
Universal Render Pipeline (URP)
HDRP (High Definition Render Pipeline)
Anpassad återgivningspipeline Stödet beror på hur pipelinen skapas.

Stöd för UnityUI

Skuggningssystemet Graphics Tools Standard fungerar med Unitys inbyggda UI-system som kallas UnityUI. Graphics Tools/Standard Canvas ska användas för allt material i UnityUI-arbetsytor.

En Canvas - eller CanvasRenderer i grafikverktygen frågar efter tillägg av en ScaleMeshEffect.cs när en krävs:

Varning om effektkontroll för skalningsnät

På UnityUI-komponenter är matrisen unity_ObjectToWorld (eller UNITY_MATRIX_M i URP) inte transformeringsmatrisen för den lokala transformeringen som den grafiska komponenten lever på utan den överordnade arbetsytans. Många grafikverktyg/Skuggningseffekter för standardarbetsytan kräver att objektskalan är känd. För att lösa det här problemet lagrar skalningsinformationen i UV-kanalattribut under konstruktionen ScaleMeshEffect.cs av användargränssnittsnät.

Tips

När du använder en Unity Image-komponent rekommenderar vi att du anger "Ingen (Sprite)" för källbilden för att förhindra att Unity-användargränssnittet genererar extra hörn.

Materialkontroll

Det finns en anpassad materialkontroll för grafikverktyg/Standard - och grafikverktyg/Standard Canvas-skuggor med namnet StandardShaderGUI.cs. Inspektören aktiverar/inaktiverar automatiskt skuggningsfunktioner, baserat på användarval och hjälpmedel i konfigurationen av återgivningstillstånd. Mer information om varje funktion hovra över varje egenskap i Unity Editor för en knappbeskrivning.

Anteckning

Kontrollgränssnittet är dynamiskt. Delar av användargränssnittet ändras när funktioner aktiveras och inaktiveras.

Materialkontroll för grafikverktyg/Standard

Inspektören kan delas upp i en handfull funktionsområden enligt beskrivningen nedan.

Återgivningsläge

Den första delen av inspektören kontrollerar materialets återgivningstillstånd. Renderingsläget avgör när och hur ett material ska återges. Syftet med Graphics Tools/Standard skuggarna och Graphics Tools/Standard Canvas är att spegla återgivningslägena som finns i Unity/Standard-skuggningen. Grafikverktyg/Standard- och grafikverktyg/Standard-arbetsyteskuggare innehåller också ett additivt återgivningsläge och anpassat återgivningsläge för fullständig användarkontroll.

Återgivningsläge Description
Ogenomskinlig (Standard) Lämplig för normala fasta objekt utan genomskinliga områden.
Utklipp Gör det möjligt att skapa transparenta effekter som har hårda kanter mellan de ogenomskinliga och genomskinliga områdena. I det här läget finns det inga halvtransparent områden, texturen är antingen 100 % ogenomskinlig eller osynlig. Detta är användbart när du använder transparens för att skapa formen på material, till exempel vegetation.
Blekna Gör att transparensvärdena helt kan tona ut ett objekt, inklusive eventuella spekulativa markeringar eller reflektioner. Det här läget är användbart om du vill animera ett objekt som tonas in eller ut. Det är inte lämpligt för återgivning av realistiska transparenta material som klar plast eller glas eftersom reflektionerna och höjdpunkterna också kommer att blekna ut.
Genomskinlig Lämplig för återgivning av realistiska transparenta material som klar plast eller glas. I det här läget får själva materialet genomskinlighetsvärden (baserat på strukturens alfakanal och färgfärgens alfa). Reflektioner och ljuspunkter kommer dock att förbli synliga med fullständig klarhet, vilket är fallet med verkliga transparenta material.
Additiv Aktiverar ett additivt blandningsläge som summerar den tidigare pixelfärgen med den aktuella pixelfärgen. Detta är det föredragna transparensläget för att undvika problem med transparenssortering.
Anpassat Gör att alla aspekter av återgivningsläget kan styras manuellt. Endast för avancerad användning.

Exempeluppställning för återgivningslägen

Utslaktningsläge

Avlivningsläge Description
Av Inaktiverar ansiktsslaktning. Gallring bör endast ställas in på Av när ett tvåsidigt nät krävs.
Front Aktiverar ansiktsslaktning framifrån.
Tillbaka (Standard) Aktiverar utslaktning av baksida. Skyddsjakt på baksidan bör aktiveras så ofta som möjligt för att förbättra renderingsprestandan.

Huvudkartor

Det här avsnittets primära funktion är att styra materialets albedofärg och fysiskt baserade återgivningsalternativ .

För att förbättra pariteten med Unity Standard-skuggningen per pixel kan metalliska värden, jämnhet, tillåtande värden och ocklusionsvärden styras via kanalpackning.

När du använder kanalpackning behöver du bara prova och läsa in en textur i minnet i stället för fyra separata. När du skriver dina texturkartor i ett program som Substance eller Photoshop kan du packa dem så här:

Kanal Egenskap
Red Metalliska
Green Ocklusion
Blue Utsläpp (gråskala)
Alfa Jämnhet

Huvudkartavsnittet har också ett alternativ för triplanarmappning och superexempel för alias. Den innehåller också alternativet att lägga till färgade utsläppsstrukturkartor när kryssrutan Utsläpp har valts.

Triplanar-mappning är en teknik för att programmatiskt strukturera ett nät. Det används ofta i terräng, nät utan UV:er eller svåra att packa upp former. Den här implementeringen stöder projektion av värld eller lokalt utrymme, specifikation av blandningsutjämning och normalt kartstöd. Observera att varje textur som används kräver tre texturexempel, så använd sparsamt i prestandakritiska situationer.

Superexempel för alias ska användas på material som visar en ikon eller bild där informationen är kritisk på avstånd.

Återgivningsalternativ

Renderingsalternativ styr främst belysningsinställningarna för ett material. Det här materialavsnittet innehåller också en handfull andra funktioner som styr en ytas färg, genomskinlighet eller position. Mer information om belysning finns nedan.

Ljusjämförelser

Fluent-alternativ

Fluent är ett designramverk som används för gränssnittskomponenter i Microsoft-produkter. Det här avsnittet innehåller en handfull funktioner som hjälper dig att emulera Fluents designsystemprinciper på godtyckliga ytor. Om du letar efter skräddarsydda Fluent Shaders finns de i namnområdet Grafikverktyg/Arbetsytor och grafikverktyg/Skuggning utan arbetsyta .

Avancerade alternativ

Liknar det avancerade avsnittet i Unitys inbyggda skuggningar. Det här avsnittet styr återgivningsordningen och om GPU-instancing-varianter ska skapas. Dessutom finns det konfigurerbara stenciltest som stöder för att uppnå en mängd olika effekter. Till exempel portaler:

Portalexempel

Belysning

Grafikverktygen/Standard- och grafikverktygen/Standard-arbetsyteskuggarna använder en enkel uppskattning för belysning. Eftersom skuggarna inte beräknar för fysisk korrekthet och energibevarande renderas de snabbt och effektivt. Blinn-Phong är den primära belysningstekniken som används och blandas med Fresnel och bildbaserad belysning för att approximera fysiskt baserad belysning. Skuggarna stöder följande ljustekniker:

Riktningsljus

Skuggningen respekterar riktningen, färgen och intensiteten för det första Unity Directional Light i scenen (om det är aktiverat).

Viktigt

Dynamiska punktljus, spotlights eller andra Unity-lampor kommer inte att beaktas i realtidsbelysning. Ljusmasker stöds inte just nu.

Sfäriska harmonier

Skuggningen använder ljusavsökningar för att approximera ljus i scenen med sfäriska harmonier, om det är aktiverat.

Viktigt

Sfäriska övertonsberäkningar utförs per hörn och ljusavsökningar blandas inte för att minska beräkningskostnaderna.

Ljusmappning

För statisk belysning kommer skuggningen att respektera ljuskartor som skapats av Unitys ljusmappningssystem. Markera återgivningen som statisk (eller ljuskarta statisk) för att använda ljuskartor.

Prestanda

En av de främsta fördelarna med att använda grafikverktygens standardskuggningssystem jämfört med Unity Standard-skuggningen är prestanda. Grafikverktygen/Standard- och grafikverktygen/Standard-arbetsyteskuggarna är konstruerade för att endast använda de funktioner som är aktiverade. Grafikverktyg/Standard- och Grafikverktyg/Standard Canvas-skuggor har dock också skrivits för att leverera jämförbara estetiska resultat som Unity Standard-skuggning, men till en mycket lägre kostnad. Ett enkelt sätt att jämföra skuggningsprestanda är via antalet åtgärder som behöver utföras på GPU:n. Storleken på beräkningarna kan variera med funktioner som är aktiverade och andra återgivningskonfigurationer.

Tips

Som tumregel bör du använda Graphics Tools Standard-skuggningen över inbyggda skuggor på mobila enheter med mixad verklighet. Men det är alltid klokt att profilera ditt scenario med verktyg som RenderDoc.

Se även