Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
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:
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.
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. |
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.
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:
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.