Condividi tramite


Shader standard degli strumenti di grafica - MRTK3

Gli strumenti grafici Standard sistema di ombreggiatura usano uno shader flessibile in grado di ottenere oggetti visivi simili allo shader Standard (o lit) di Unity. Implementa Fluent Design System principi e rimane performante nei dispositivi di realtà mista.

esempio di raccolta di materiali shader Standard

Esempio

Vedi l'esempio di Raccolta materiali per più dimostrazioni di varianti di shader di strumenti grafici/Standard. Per esempi di strumenti grafici/canvas Standard, vedere l'esempio unityUI

Architettura

Il sistema di ombreggiatura Graphics Tools/Standard è un "uber shader" che usa la funzionalità di variante del programma shader di Unity per generare automaticamente codice shader ottimale in base alle proprietà del materiale. Quando un utente seleziona le proprietà dei materiali nel controllo dei materiali, comporta solo costi di prestazioni per le funzionalità abilitate.

Per supportare meglio i flussi di lavoro di Unity tradizionali e i flussi di lavoro UnityUI (canvas), il sistema di ombreggiatura Graphics Tools/Standard include due punti di ingresso dello shader:

Contesto Predefinita UnityUI
Nome Strumenti grafici/Standard Strumenti di grafica/area di disegno Standard
Shader GraphicsToolsStandard GraphicsToolsStandardCanvas

Entrambi gli shader sono per lo più identici perché condividono il codice shader comune. L'area di disegno strumenti grafici/Standard contiene una logica aggiuntiva specifica per UnityUI.

Lo shader seguente include l'alimentazione del sistema di ombreggiatura Graphics Tools/Standard:

Includi Finalità
GraphicsToolsStandardProgram Contiene i metodi del punto di ingresso vertex e fragment shader (implementazione di base).
GraphicsToolsStandardMetaProgram Contiene i metodi del punto di ingresso vertex e fragment shader usati da Unity per l'illuminazione statica (non usata in fase di esecuzione).
GraphicsToolsStandardInput Definizioni per attributi vertice, interpolatori di vertici, trame, campionatori di trame, buffer costanti per materiale, proprietà globali e costanti.
GraphicsToolsCommon Metodi riutilizzabili e definisce.

Supporto della pipeline di rendering

Unity offre una manciata di pipeline di rendering tra cui gli sviluppatori possono scegliere. Gli strumenti di grafica Standard sistema di ombreggiatura sono progettati per funzionare automaticamente con la pipeline di rendering predefinita di Unity o la pipeline URP (Universal Render Pipeline). Non è necessario cambiare shader in base alla pipeline. Di seguito è riportata una matrice di supporto:

Oleodotto Supportato Eccezioni
Pipeline di rendering predefinita L'acrilico "Modalità sfocatura" non è supportato.
Pipeline di rendering universale (URP)
Pipeline di rendering ad alta definizione (HDRP)
Pipeline di rendering personalizzata Il supporto dipende dalla modalità di compilazione della pipeline.

Supporto di UnityUI

Il sistema di ombreggiatura Standard Graphics Tools funziona con il sistema di interfaccia utente predefinito di Unity denominato UnityUI. Deve Graphics Tools/Standard Canvas essere usato per tutti i materiali all'interno di canvas UnityUI.

Un canvas o CanvasRenderer all'interno di Strumenti di grafica richiederà l'aggiunta di un ScaleMeshEffect.cs quando necessario:

Avviso di controllo dell'effetto mesh di scalabilità

Nei componenti UnityUI, la unity_ObjectToWorld matrice (o UNITY_MATRIX_M in URP) non è la matrice di trasformazione della trasformazione locale su cui risiede il componente grafico, ma quella dell'area di disegno padre. Molti strumenti grafici/Standard effetti shader canvas richiedono che la scala degli oggetti sia nota. Per risolvere questo problema, archivierà le ScaleMeshEffect.cs informazioni di ridimensionamento negli attributi del canale UV durante la costruzione della mesh dell'interfaccia utente.

Consiglio

Quando si usa un componente Immagine Unity, è consigliabile specificare "Nessuno (Sprite)" per l'immagine di origine per impedire all'interfaccia utente di Unity di generare vertici aggiuntivi.

Controllo dei materiali

Esiste un controllo dei materiali personalizzato per gli shader Di disegno/Strumenti grafica/Standard e Strumenti grafica/Standard denominato StandardShaderGUI.cs. Il controllo abilita/disabilita automaticamente le funzionalità dello shader, in base alla selezione dell'utente e agli assistenti nella configurazione dello stato di rendering. Per altre informazioni su ogni funzionalità, passare il puntatore su ogni proprietà nel Editor Unity per una descrizione comando.

Nota

L'interfaccia utente del controllo è dinamica. Le parti dell'interfaccia utente cambieranno man mano che le funzionalità sono abilitate e disabilitate.

Controllo dei materiali per strumenti grafici/Standard

Il controllo può essere suddiviso in alcune aree di funzionalità, come descritto di seguito.

Modalità di rendering

La prima parte del controllo controlla lo stato di rendering del materiale. La modalità di rendering determina quando e come verrà eseguito il rendering di un materiale. Lo scopo degli Graphics Tools/Standard shader e Graphics Tools/Standard Canvas è quello di eseguire il mirroring delle modalità di rendering disponibili nello shader Unity/Standard. Gli shader Di disegno di strumenti grafici/Standard e strumenti di grafica/Standard includono anche una modalità di rendering additive e la modalità di rendering personalizzato per il controllo utente completo.

Modalità di rendering Descrizione
Opaco (Impostazione predefinita) Adatto per oggetti solidi normali senza aree trasparenti.
Estirpare Consente la creazione di effetti trasparenti con bordi duri tra le aree opache e trasparenti. In questa modalità non sono presenti aree semitrasparente, la trama è opaca al 100% o invisibile. Ciò è utile quando si usa la trasparenza per creare la forma dei materiali, ad esempio la vegetazione.
Sbiadire Consente ai valori di trasparenza di dissolvere completamente un oggetto, incluse le evidenziazioni o i riflessi speculari che può avere. Questa modalità è utile se si vuole animare un oggetto che si dissolve o si dissolve. Non è adatto per il rendering di materiali trasparenti realistici come plastica trasparente o vetro perché anche i riflessi e le evidenziazioni saranno sbiaditi.
Trasparente Adatto per il rendering di materiali trasparenti realistici come plastica trasparente o vetro. In questa modalità, il materiale stesso assumerà valori di trasparenza (in base al canale alfa della trama e all'alfa del colore della tinta). Tuttavia, i riflessi e le luci rimarranno visibili con la massima chiarezza come nel caso di materiali reali trasparenti.
Additivo Abilita una modalità di fusione aggiuntiva, che somma il colore del pixel precedente con il colore del pixel corrente. Questa è la modalità di trasparenza preferita per evitare problemi di ordinamento della trasparenza.
Personalizzato Consente di controllare manualmente ogni aspetto della modalità di rendering. Solo per l'utilizzo avanzato.

Scaletta di esempio delle modalità di rendering

Modalità di abbattimento

Modalità di abbattimento Descrizione
Disattivato Disabilita l'eliminazione dei volti. L'opzione Culling deve essere impostata su Off solo quando è necessaria una mesh a due lati.
Fronte Abilita l'abbattimento della faccia anteriore.
Indietro (Impostazione predefinita) Abilita l'eliminazione della faccia posteriore. L'eliminazione del viso posteriore deve essere abilitata il più spesso possibile per migliorare le prestazioni di rendering.

Mappe principali

La funzione principale di questa sezione consiste nel controllare il colore albedo del materiale e le opzioni di rendering basate fisicamente .

Per migliorare la parità con i valori unity Standard shader per pixel metallico, fluidità, emissivo e occlusione possono essere controllati tramite l'imballaggio del canale.

Quando si usa la compressione dei canali, è necessario solo campionare e caricare una trama in memoria anziché quattro distinte. Quando scrivi le tue mappe di trama in un programma come Substance o Photoshop, puoi impacchettarle a mano come segue:

Canale Proprietà
Rosso Metallico
Verde Occlusione
Blu Emissione (scala di grigi)
Alfa Levigatezza

La sezione mappa principale include anche un'opzione per il mapping triplanar e l'anti-aliasing con campioni avanzati. Contiene anche l'opzione per aggiungere mappe delle trame di emissione colorate una volta selezionata la casella di controllo Emissione.

Il mapping triplanare è una tecnica per creare una trama a livello di codice di una mesh. Viene spesso usato in terreni, mesh senza UV o difficile da scartare le forme. Questa implementazione supporta la proiezione dello spazio globale o locale, la specifica della fluidità di fusione e il supporto della mappa normale. Si noti che ogni trama usata richiede tre campioni di trama, quindi usare con parsimonia in situazioni critiche per le prestazioni.

L'anti-aliasing super-campione deve essere usato su tutti i materiali che visualizzano un'icona o un'immagine in cui i dettagli sono critici a distanza.

Opzioni di rendering

Le opzioni di rendering controllano principalmente le impostazioni di illuminazione per un materiale. Questa sezione di materiale contiene anche alcune altre funzionalità che controllano il colore, la traslucenza o la posizione di una superficie. Per altri dettagli sull'illuminazione, vedere di seguito.

Confronti di illuminazione

Opzioni fluent

Fluent è un framework di progettazione usato tra i componenti dell'interfaccia utente nei prodotti Microsoft. Questa sezione contiene alcune funzionalità che consentono di emulare i principi del sistema di progettazione Fluent su superfici arbitrarie. Se stai cercando shader Fluent personalizzati, questi sono disponibili nello spazio dei nomi Strumenti grafica/Strumenti disegno e grafica/Shader non Canvas .

Opzioni avanzate

Simile alla sezione avanzata negli shader predefiniti di Unity. Questa sezione controlla l'ordine di rendering e se devono essere compilate varianti di istanze della GPU. Sono inoltre disponibili supporti di test degli stencil configurabili per ottenere un'ampia gamma di effetti. Ad esempio, i portali:

Esempio di portale

Illuminazione

Gli shader Strumenti grafici/Standard e Strumenti grafica/Standard Canvas usano una semplice approssimazione per l'illuminazione. Poiché gli shader non calcolano la correttezza fisica e la conservazione dell'energia, il rendering viene eseguito in modo rapido ed efficiente. Blinn-Phong è la tecnica di illuminazione primaria usata ed è miscelata con Fresnel e l'illuminazione basata su immagini per approssimare l'illuminazione fisica. Gli shader supportano le tecniche di illuminazione seguenti:

Luce direzionale

Lo shader rispetterà la direzione, il colore e l'intensità della prima luce direzionale unity nella scena (se abilitata).

Importante

Le luci a punti dinamiche, i faretti o qualsiasi altra luce Unity non verranno considerati nell'illuminazione in tempo reale. Le maschere leggere non sono attualmente supportate.

Armoniche sferiche

Lo shader usa probe di luce per approssimare le luci nella scena usando armoniche sferiche, se abilitate.

Importante

I calcoli delle armoniche sferiche vengono eseguiti per vertice e i probe di luce non vengono miscelati per ridurre i costi di calcolo.

Mapping della luce

Per l'illuminazione statica, lo shader rispetta le mappe di luce create dal sistema di mapping della luce di Unity. Contrassegnare il renderer come statico (o statico lightmap) per usare le mappe di luce.

Prestazioni

Uno dei vantaggi principali dell'uso del sistema di ombreggiatura standard di Strumenti grafici rispetto allo shader Standard Unity è rappresentato dalle prestazioni. Gli shader di strumenti grafici/Standard e strumenti di grafica/Standard canvas sono progettati per usare solo le funzionalità abilitate. Tuttavia, anche gli shader Graphics Tools/Standard e Graphics Tools/Standard Canvas sono stati scritti per ottenere risultati estetici confrontabili come shader Standard Unity, ma a un costo molto inferiore. Un modo semplice per confrontare le prestazioni dello shader consiste nel numero di operazioni che devono essere eseguite sulla GPU. L'entità dei calcoli può variare in base alle funzionalità abilitate e ad altre configurazioni di rendering.

Consiglio

Come regola generale, è consigliabile usare strumenti grafici Standard shader sugli shader predefiniti nei dispositivi di realtà mista per dispositivi mobili. Tuttavia, è sempre consigliabile profilare lo scenario con strumenti come RenderDoc.

Vedere anche