Shader standard degli strumenti grafici - MRTK3

Il sistema di ombreggiatura Standard degli strumenti di grafica usa uno shader flessibile in grado di ottenere oggetti visivi simili allo shader Standard (o Lit) di Unity. Implementa Fluent Design System principi e rimane efficiente nei dispositivi di realtà mista.

Standard shader material gallery sample

Esempio

Vedere l'esempio raccolta materiali per più dimostrazioni delle varianti di strumenti grafici/shader Standard. Per esempi di strumenti grafici/canvas standard, vedere l'esempio unityUI

Architettura

Il sistema di ombreggiatura Standard/Strumenti grafici è un "uber shader" che usa la funzionalità di variante del programma shader di Unity per generare automaticamente codice shader ottimale in base alle proprietà dei materiali. Quando un utente seleziona le proprietà materiali nel controllo materiale, comporta solo un costo delle 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 Standard/Strumenti grafici ha due punti di ingresso shader:

Contesto Predefinito UnityUI
Nome Strumenti grafici/Standard Strumenti grafici/Canvas standard
Shader GraphicsToolsStandard GraphicsToolsStandardCanvas

Entrambi gli shader sono per lo più identici perché condividono codice shader comune. Strumenti grafici/Canvas standard contiene una logica aggiuntiva specifica per UnityUI.

Lo shader seguente include la potenza del sistema di ombreggiatura Standard/Strumenti grafici:

Includi Scopo
GraphicsToolsStandardProgram Contiene i metodi del punto di ingresso vertex e fragment shader (implementazione principale).
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 dei vertici, interpolatori di vertici, trame, campioni di trama, buffer costanti materiali, proprietà globali e costanti.
GraphicsToolsCommon Metodi riutilizzabili e definisce.

Supporto della pipeline di rendering

Unity include alcune pipeline di rendering tra cui gli sviluppatori possono scegliere. Il sistema di ombreggiatura Standard degli strumenti grafici è progettato 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:

Pipeline Supportato Eccezioni
Pipeline di rendering predefinita Le "modalità sfocatura" acrilico non sono supportate.
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 degli strumenti grafici 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 oggetto Canvas o CanvasRenderer all'interno di Strumenti di grafica richiederà l'aggiunta di un oggetto ScaleMeshEffect.cs quando è necessario:

Scale mesh effect inspector warning

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

Suggerimento

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 materiale

Esiste un controllo materiale personalizzato per gli strumenti di grafica/Strumenti di grafica standard e Strumenti grafici/Canvas shader Standard denominato StandardShaderGUI.cs. Il controllo abilita/disabilita automaticamente le funzionalità dello shader, in base alla selezione dell'utente e agli aidi nella configurazione dello stato di rendering. Per altre informazioni su ogni funzionalità , passare il puntatore del mouse su ogni proprietà nell'editor di 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.

Material inspector for Graphics Tools/Standard

Il controllo può essere suddiviso in una manciata di aree caratteristiche, 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 shader e Graphics Tools/Standard Canvas è quello di Graphics Tools/Standard eseguire il mirroring delle modalità di rendering disponibili nello shader Unity/Standard. Gli strumenti grafici/Strumenti grafici/Strumenti grafici/Canvas shader standard includono anche una modalità di rendering aggiuntiva e la modalità di rendering personalizzata per il controllo utente completo.

Modalità di rendering Descrizione
Opaco (Impostazione predefinita) Adatto per oggetti solidi normali senza aree trasparenti.
Ritaglio Consente la creazione di effetti trasparenti con bordi rigidi 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 utilizza la trasparenza per creare la forma dei materiali, ad esempio la vegetazione.
Dissolvenza Consente ai valori di trasparenza di dissolvere completamente un oggetto, incluse eventuali evidenziazioni speculari o riflessi che potrebbero avere. Questa modalità è utile se vuoi animare un oggetto in dissolvenza o in uscita. Non è adatto per il rendering di materiali trasparenti realistici come la plastica chiara o il vetro, perché anche i riflessi e le evidenziazioni verranno sbiaditi.
Modalità trasparente Adatto per il rendering di materiali trasparenti realistici, ad esempio plastica chiara 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 gli elementi di luce rimarranno visibili con chiarezza completa, come nel caso dei materiali trasparenti reali.
Additive Abilita una modalità di fusione aggiuntiva, che somma il colore del pixel precedente con il colore del pixel corrente. Si tratta della 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.

Rendering modes example lineup

Modalità Cull

Modalità Cull Descrizione
Off Disabilita la culling del viso. Culling deve essere impostato su Off solo quando è necessaria una mesh laterale.
Front Abilita l'abbattimento del viso anteriore.
Indietro (Impostazione predefinita) Abilita la culling del viso indietro. La riduzione del viso indietro deve essere abilitata il più spesso possibile per migliorare le prestazioni di rendering.

Mappe principali

Questa funzione primaria di questa sezione consiste nel controllare il colore albedo del materiale e le opzioni di rendering in base fisicamente .

Per migliorare la parità con i valori di shader Unity Standard per pixel metallico, liscia, emissivo e occlusione, possono essere controllati tutti tramite la compressione del canale.

Quando si usa la compressione del canale, è necessario solo campione e caricare una trama in memoria anziché quattro separati. Quando scrivi le mappe della trama in un programma come Substance o Photoshop, puoi crearle come segue:

Channel Proprietà
Red Metallici
Green Occlusione
Blu Emissione (scala grigia)
Alfa Scorrevolezza

La sezione della mappa principale include anche un'opzione per il mapping di triplanar e l'anti-aliasing super-sample.

Il mapping di Triplanar è una tecnica per trame a livello di codice di una mesh. Spesso viene usato in terreno, mesh senza UV o forme difficili da annullare. Questa implementazione supporta la proiezione dello spazio locale o mondiale, la specifica della fluidità di fusione e del supporto della mappa normale. Nota, ogni trama usata richiede tre campioni di trama, quindi usare in modo spasimo nelle situazioni critiche per le prestazioni.

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

Opzioni di rendering

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

Lighting comparisons

opzioni Fluent

Fluent è un framework di progettazione usato nei componenti dell'interfaccia utente nei prodotti Microsoft. Questa sezione contiene alcune funzionalità che consentono di emulare Fluent principi di sistema di progettazione su superfici arbitrarie. Se si sta cercando Fluent shader personalizzati, è possibile trovare nello spazio dei nomi Strumenti grafici/Canvas e Strumenti grafici/Non-Canvas shader.

Advanced Options

Analogamente alla sezione avanzata negli shader predefiniti di Unity. Questa sezione controlla l'ordine di rendering e se devono essere compilate varianti di GPU instancing. Inoltre, sono disponibili test stencil configurabili per ottenere un'ampia gamma di effetti. Ad esempio i portali:

Portal example

Luce

Gli strumenti grafici/ strumenti grafici/ strumenti grafici/shader canvas standard usano un'approssimazione semplice per l'illuminazione. Poiché i shader non calcolano la correttezza fisica e la conservazione dell'energia, eseguono il rendering rapido ed efficiente. Blinn-Phong è la tecnica di illuminazione primaria usata e si fonde con Fresnel e illuminazione basata sull'immagine per approssimare l'illuminazione fisicamente basata su. I shader supportano le tecniche di illuminazione seguenti:

Luce direzionale

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

Importante

Le luci del punto dinamico, i riflettori o qualsiasi altra luce Unity non verrà considerata in tempo reale. Le maschere di luce non sono supportate in questo momento.

Armonica sferica

Lo shader usa probe di luce per approssimare le luci nella scena usando armonica sferica, se abilitata.

Importante

I calcoli di armonica sferica vengono eseguiti per vertice e i probe di luce non vengono mescolati per ridurre i costi di calcolo.

Lightmapping

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

Prestazioni

Uno dei vantaggi principali per l'uso del sistema di ombreggiatura standard di Strumenti grafici su Unity Standard shader è le prestazioni. Gli strumenti grafici/Strumenti grafici / Strumenti grafici/Canvas shader standard sono progettato per usare solo le funzionalità abilitate. Tuttavia, gli strumenti grafici/Strumenti grafici/ Strumenti grafici/ Canvas standard sono stati scritti anche per offrire risultati estetici paragonabili come lo shader Standard di 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. La grandezza dei calcoli può variare in base alle funzionalità abilitate e ad altre configurazioni di rendering.

Suggerimento

Come regola di identificazione, è consigliabile usare lo shader standard degli strumenti grafici su shader predefiniti nei dispositivi di realtà mista per dispositivi mobili. Tuttavia, è sempre consigliabile profilare lo scenario con strumenti come RenderDoc.

Vedi anche