Linee guida sulle prestazioni per mesh
Prestazioni
Questo articolo è un'introduzione alla comprensione del significato delle prestazioni durante la creazione di contenuti in Mesh. La frequenza dei fotogrammi è l'unità più semplice per razionalizzare le prestazioni. In genere la frequenza dei fotogrammi viene misurata in "fotogrammi al secondo" (fps) o quante volte l'applicazione può eseguire il rendering di un'immagine al secondo. L'esperienza di un utente può essere notevolmente degradata se il contenuto non viene eseguito a una frequenza di fotogrammi ottimale. Per tenere traccia e ottenere la frequenza dei fotogrammi di qualità, Mesh offre un'ampia gamma di strumenti e raccomandazioni.
La tabella seguente elenca la frequenza dei fotogrammi di destinazione per piattaforma supportata da Mesh.
PC | Android (Quest) |
---|---|
Frequenza di aggiornamento del monitoraggio (minimo 30fps) | 72fps |
Scene semplici e complesse
Come per tutto lo sviluppo 3D, in Mesh esiste un compromesso tra fedeltà visiva e prestazioni. A seconda del computer che esegue Mesh, l'utente potrebbe riscontrare una riduzione delle prestazioni, soprattutto se la scena è complessa.
Si pensi a prestazioni come un budget finanziario. Se hai $100 dollari da spendere non puoi spendere $ 60 per il rendering di un ambiente complesso, $ 40 simulando fisica avanzata e $ 20 per gli script visivi - finirai per spendere sul tuo budget. Gli sviluppatori devono fare compromessi tra fedeltà visiva, complessità di interazione, numero di utenti e altri sistemi. Il team mesh ha generato un elenco di soglie di prestazioni non come regola, ma una guida allo sviluppo.
Metodologia di profilatura
Gli ambienti di creazione in Mesh in genere prevedono tre passaggi.
- Creare contenuto in Unity
- Caricare in Microsoft Mesh
- Eseguire il contenuto nell'app Mesh
Durante il passaggio uno è consigliabile usare una combinazione di Content analizzatore prestazioni (CPA) e Performance Profiler presenti nel pacchetto del toolkit Mesh, necessario per qualsiasi progetto Unity usato per generare un ambiente Mesh. Durante il passaggio 2, lo strumento CPA viene eseguito automaticamente. Infine, durante il passaggio 3 finale, la profilatura deve essere eseguita tramite il profiler prestazioni predefinito di Mesh.
Strumenti per l'analisi delle prestazioni
Content analizzatore prestazioni (CPA)
È consigliabile usare Content analizzatore prestazioni (CPA) per ottimizzare le prestazioni dell'esperienza mesh. Lo strumento CPA può analizzare in modo statico il contenuto in fase di creazione. È possibile usare cpa per controllare i conteggi dei triangoli, i batch, l'utilizzo della memoria delle trame e altro ancora. In questo modo è possibile rilevare i problemi di ottimizzazione del contenuto e le opportunità prima del caricamento del contenuto in Mesh.
Per eseguire lo strumento CPA, selezionare Mesh Toolkit>Content analizzatore prestazioni dalle voci di menu.
I problemi e i suggerimenti vengono segnalati tramite una finestra dell'editor in Unity.
Importante
Una parte degli analizzatori CPA verrà eseguita automaticamente durante il caricamento del contenuto in Mesh. Poiché non tutti i test possono essere eseguiti automaticamente, è consigliabile eseguire manualmente il CPA come parte del processo di sviluppo.
Profiler prestazioni
Il profiler prestazioni offre una finestra semplice per visualizzare la frequenza dei fotogrammi del progetto Mesh, la complessità della scena e l'utilizzo della memoria in tutte le piattaforme. Il profiler prestazioni è accessibile all'interno dell'app Mesh e all'interno del toolkit Mesh.
Per visualizzare Il profiler prestazioni nell'app Mesh, aprire il pannello delle impostazioni e selezionare Per sviluppatori Profiler prestazioni>. Il profiler prestazioni verrà visualizzato nella parte superiore centrale della finestra.
Quando si usa il Profiler prestazioni, cercare fotogrammi mancanti, che vengono visualizzati come caselle rosse, contrassegnate con una "x". I fotogrammi mancanti indicano che il contenuto non raggiunge la frequenza dei fotogrammi di destinazione di Mesh e potrebbe richiedere operazioni di ottimizzazione. La complessità della scena e l'utilizzo della memoria vengono visualizzati sotto gli indicatori di fotogrammi mancanti. Questi numeri potrebbero indicare il motivo per cui il contenuto non soddisfa la frequenza dei fotogrammi di destinazione di Mesh.
Il testo nel profiler prestazioni diventa rosso quando una metrica non soddisfa la soglia consigliata per le prestazioni di Mesh. Altre informazioni sulle soglie delle prestazioni sono elencate in una sezione di procedura.
Importante
Non è possibile visualizzare batch all'interno dell'app Mesh. Sono disponibili solo all'interno dell'editor unity.
È anche consigliabile tenere d'occhio la barra di memoria inferiore per assicurarsi che l'utilizzo della memoria non cambi rapidamente o si avvicini al limite di memoria dell'applicazione.
Per visualizzare il Profiler prestazioni nell'editor di Unity, assicurarsi di disporre del componente Di installazione dell'emulatore mesh nella scena. Assicurarsi che l'impostazione Conteggio schermata iniziale sia zero. Se è uno o più, non sarà possibile attivare o disattivare il Profiler prestazioni durante la riproduzione.
Fare clic sul pulsante Play di Unity per attivare la modalità di riproduzione, attivare il profiler prestazioni tramite il tasto "v". Il profiler prestazioni verrà visualizzato nella parte superiore centrale della finestra del gioco.
Importante
Quando si visualizza il Profiler prestazioni nell'editor di Unity, sono disponibili altre informazioni, ad esempio conteggi batch e tempo di millisecondi necessari per l'esecuzione di determinati sottosistemi. Si noti che queste metriche sono un'approssimazione relativa delle prestazioni e la profilatura finale dovrebbe avvenire all'interno dell'app Mesh.
Se si è curiosi che cosa i millisecondi nella parte inferiore del Profiler prestazioni stanno misurando, è possibile trovare tali informazioni nella sezione Soglie delle prestazioni .
Altri strumenti
Sia cpa che profiler prestazioni sono personalizzati per Mesh, ma esistono anche alcuni ottimi strumenti per la profilatura del contenuto in Unity:
- Profiler di Unity
- Debugger dei frame di Unity
- RenderDoc (IMPORTANTE: RenderDoc può eseguire solo acquisizioni dall'editor unity). Le compilazioni dell'app mesh non funzioneranno.
Soglie delle prestazioni
L'ottimizzazione delle prestazioni può essere un'azione di bilanciamento a seconda dello scenario per cui si sta sviluppando e dell'esperienza che si vuole ottenere. Il rendering di una scena in Mesh è una conseguenza diretta del modo in cui viene creato il contenuto dell'ambiente. Di seguito sono riportati i suggerimenti per il rendering per le piattaforme correnti.
Soglie di rendering del PC
Polycount | Batch | Post-elaborazione |
---|---|---|
<~500k Triangoli | ~200 batch | Disabilitata |
Texture | Mappe leggero | Risoluzione skybox |
< ~160 MB | < ~80 MB | 2048x4096 |
Soglie di rendering di Android (Quest)
Polycount | Batch | Post-elaborazione |
---|---|---|
<~80k Triangoli | ~50 batch | Disabilitata |
Texture | Mappe leggero | Risoluzione skybox |
< ~16 MB | < ~20 MB | 1024x2048 |
È possibile notare che le restrizioni dello shader non sono specificate nelle tabelle precedenti. Poiché Mesh usa l'URP (Universal Render Pipeline) di Unity, è consigliabile usare shader URP meno costosi, ad esempio universal render pipeline/luce con bake o pipeline di rendering universale/lit semplice. Si comprende anche il valore degli shader personalizzati. In generale, si tenta di mantenere gli shader personalizzati per la maggior parte dell'ambiente entro le soglie seguenti:
Matematica dei vertici | Matematica frammento | Texture |
---|---|---|
< 30 operazioni | < 120 operazioni | < 2 ricerche |
Importante
Il conteggio delle operazioni shader è in una metrica imperfetta per calcolare le prestazioni dello shader, uno sviluppatore di shader deve anche profilare lo shader in esecuzione in Mesh per verificare che venga eseguito in modo efficiente.
Per informazioni sulla configurazione della pipeline di rendering dell'URP per l'app Mesh, è possibile esaminare i renderer specifici della piattaforma nella directory \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP del progetto.
Soglie di scripting
Mesh consente di creare contenuto interattivo tramite script visivi, scripting cloud, fisica mesh e/o WebSlate. Quando si visualizza il Profiler prestazioni nell'editor di Unity, i tempi di millisecondo (ms) necessari per l'esecuzione di determinati sottosistemi vengono visualizzati nella parte inferiore del profiler. Quando il testo passa da verde a rosso che indica che un sottosistema potrebbe essere superiore al budget. La tabella seguente fornisce altre informazioni su questi budget.
Nome sottosistema | Max Frame Budget | Descrizione |
---|---|---|
Comportamento | N/D | Tempo di millisecondo impiegato per aggiornare tutti gli script MonoBehaviour locali (C# e Visual) |
Render | 25% | Tempo di millisecondo per il rendering della CPU della scena |
WebSlate | N/D | Tempo di millisecondo per aggiornare ed eseguire il rendering di qualsiasi WebSlate nella scena |
Phys Sim | 15% | Tempo di millisecondo per eseguire il passaggio della simulazione PhysX |
Sincronizzazione fisica | 15% | Tempo di millisecondo per sincronizzare tutti i corpi fisici |
Phys Effx | 10% | Tempo di millisecondo per aggiornare i comportamenti fisici su misura |
Utente di Visual Studio | 15% | Tempo di millisecondo impiegato nei grafici di Visual Script inseriti nella scena |
VS Env | 10% | Tempo di millisecondo impiegato per l'aggiornamento dell'infrastruttura di Visual Script |
VS Net | 10% | Tempo di millisecondo impiegato per la sincronizzazione dello stato della rete di Visual Script |
I valori "Max Frame Percentage" elencati in precedenza sono consigli basati su contenuto generico. Gli sviluppatori devono bilanciare questi sistemi per garantire che il frame possa essere aggiornato nel tempo allocato.
Risorse di prestazioni e ottimizzazione
Nozioni fondamentali sulle prestazioni grafiche https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html
Pipeline di rendering universale (URP) https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html
SRP Batcher https://docs.unity3d.com/Manual/SRPBatcher.html
Rendering a istanza a passaggio singolo e shader personalizzati https://docs.unity3d.com/Manual/SinglePassInstancing.html