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.
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:
Nei componenti UnityUI la unity_ObjectToWorld
matrice (o UNITY_MATRIX_M
nell'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.
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 additivi, che somma il colore del pixel precedente con il colore 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. |
Modalità Cull
Modalità Cull | Descrizione |
---|---|
Off | Disabilita la culling del viso. La selezione deve essere impostata solo su Off quando è necessaria una mesh lato due. |
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. Contiene anche l'opzione per aggiungere mappe di trama a emissioni colorate dopo aver selezionato la casella di controllo Emissione.
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.
Opzioni Fluent
Fluent è un framework di progettazione usato nei componenti dell'interfaccia utente nei prodotti Microsoft. Questa sezione contiene una manciata di funzionalità che consentono di emulare i principi del sistema di progettazione Fluent sulle superfici arbitrarie. Se si sta cercando shader Fluent su misura, sono disponibili 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:
Luce
Gli strumenti grafici/ strumenti grafici/ strumenti grafici/shader canvas standard usano un'approssimazione semplice per l'illuminazione. Poiché gli 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/shader canvas 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.