Prestandariktlinjer för Mesh
Prestanda
Den här artikeln är en introduktion till att förstå prestandans betydelse vid redigering av innehåll i Mesh. Framerate är den enklaste enheten för att rationalisera prestanda. Normalt mäts framerate i "bildrutor per sekund" (fps) eller hur många gånger programmet kan återge en bild per sekund. En användares upplevelse kan försämras avsevärt om innehållet inte körs med en optimal ramhastighet. För att hjälpa dig att spåra och uppnå kvalitetsramhastighet tillhandahåller Mesh en mängd olika verktyg och rekommendationer.
I tabellen nedan visas målramhastigheten per plattform som Mesh stöder.
PC | Android (Quest) |
---|---|
Övervaka uppdateringsfrekvens (minst 30fps) | 72fps |
Enkla kontra komplexa scener
Som med all 3D-utveckling finns det i Mesh en kompromiss mellan visuell återgivning och prestanda. Beroende på vilken dator som kör Mesh kan användaren få sämre prestanda, särskilt om scenen är komplex.
Tänk på prestanda som en ekonomisk budget. Om du har $ 100 dollar att spendera kan du inte spendera $ 60 rendering av en komplex miljö, $ 40 simulera avancerad fysik och $ 20 för visuella skript - du skulle sluta spendera över din budget. Som utvecklare måste du göra kompromisser mellan visuell återgivning, interaktionskomplexitet, antalet användare och andra system. Mesh-teamet har genererat en lista över prestandatrösklar , inte som regel, utan en guide till utveckling.
Profileringsmetodik
Redigeringsmiljöer i Mesh omfattar vanligtvis tre steg.
- Skapa innehåll i Unity
- Ladda upp till Microsoft Mesh
- Kör ditt innehåll i Mesh-appen
Under steg ett rekommenderar vi att du använder en blandning av CPA (Content Analizator performansi) och Performance Profiler som finns i Mesh Toolkit-paketet som krävs för alla Unity-projekt som används för att generera en Mesh-miljö. Under steg två körs CPA-verktyget automatiskt. Slutligen bör profilering ske via Mesh inbyggda Prestandaprofiler under steg tre sista.
Verktyg för att analysera prestanda
Innehåll Analizator performansi (CPA)
Vi rekommenderar att du använder Content Analizator performansi (CPA) för att maximera prestanda för din Mesh-upplevelse. CPA-verktyget kan statiskt analysera ditt innehåll vid redigeringstillfället. Du kan använda CPA för att granska triangelantal, batchar, användning av texturminne med mera. På så sätt kan du fånga upp problem med innehållsoptimering och möjligheter innan innehåll laddas upp till Mesh.
Om du vill köra CPA-verktyget väljer du Mesh Toolkit>Content Analizator performansi från menyalternativen.
Problem och förslag rapporteras via ett redigeringsfönster i Unity.
Viktigt!
En del av CPA-analysverktygen körs automatiskt när innehåll laddas upp till Mesh. Eftersom inte alla tester kan köras automatiskt är det bra att köra CPA manuellt som en del av utvecklingsprocessen.
Prestandaprofilerare
Prestandaprofiler ger ett enkelt fönster för att visa mesh-projektets bildfrekvens, scenkomplexitet och minnesanvändning på alla plattformar. Prestandaprofiler är tillgänglig i Mesh-appen och i Mesh-verktygslådan.
Om du vill visa Prestandaprofiler i Mesh-appen öppnar du inställningspanelen och väljer För utvecklare>Performance Profiler. Prestandaprofiler visas längst upp i mitten av fönstret.
När du använder Prestandaprofiler letar du efter missade bildrutor, som visas som röda rutor, markerade med "x". Missade bildrutor anger att innehållet inte når Meshs målramhastighet och kan behöva optimeringsarbete. Scenkomplexitet och minnesanvändning visas under indikatorerna för missad bildruta. Dessa siffror kan tyda på varför ditt innehåll inte uppfyller Meshs målbildfrekvens.
Text på Prestandaprofiler blir röd när ett mått inte uppfyller Meshs rekommenderade prestandatröskelvärde. Mer information om prestandatrösklar visas i ett avsnitt om att fortsätta.
Viktigt!
Batchar kan inte visas i Mesh-appen. De är endast tillgängliga i Unity-redigeraren.
Du bör också hålla ett öga på det nedre minnesfältet för att försäkra dig om att minnesanvändningen inte ändras snabbt eller närmar sig programmets minnesgräns.
Om du vill visa Prestandaprofiler i Unity-redigeraren ser du till att du har mesh-emulatorns installationskomponent i scenen. Kontrollera att inställningen Initial Screen Count är noll. Om det är en eller flera kan du inte växla på Prestandaprofiler när du spelar.
Klicka på Knappen Spela upp i Unity för att ange uppspelningsläge och aktivera Prestandaprofiler via v-tangenten. Prestandaprofiler visas längst upp i mitten av spelfönstret.
Viktigt!
När du visar Prestandaprofiler i Unity-redigeraren får du en glimt av mer information, till exempel batchantal och millisekunders tid det tar för vissa undersystem att köras. Observera att dessa mått är en relativ uppskattning av prestanda och slutlig profilering bör ske i Mesh-appen.
Om du är nyfiken på vilka millisekunder som mäts längst ned i Prestandaprofiler kan du hitta den informationen i avsnittet med prestandatrösklar .
Andra verktyg
Både CPA och Performance Profiler är anpassade för Mesh, men det finns också en handfull bra verktyg för profilering av innehåll i Unity:
- Unitys profilerare
- Unitys bildrutefelsökare
- RenderDoc (VIKTIGT: RenderDoc kan bara utföra avbildningar från Unity-redigeraren. Mesh-appbyggen fungerar inte).
Tröskelvärden för prestanda
Att optimera prestanda kan vara en balansakt beroende på vilket scenario du utvecklar för och vilken upplevelse du vill uppnå. Att återge en scen i Mesh är en direkt följd av hur miljöns innehåll skapas. Nedan visas återgivningsförslag för våra aktuella plattformar.
Tröskelvärden för pc-återgivning
Polycount | Batchar | Efter bearbetning |
---|---|---|
<~500 000 trianglar | ~200 batchar | Inaktiverad |
Texturer | Ljuskartor | Skybox-upplösning |
< ~160 MB | < ~80 MB | 2048x4096 |
Tröskelvärden för Android-återgivning (Quest)
Polycount | Batchar | Efter bearbetning |
---|---|---|
<~80k trianglar | ~50 batchar | Inaktiverad |
Texturer | Ljuskartor | Skybox-upplösning |
< ~16 MB | < ~20 MB | 1024x2048 |
Du kanske märker att skuggningsbegränsningar inte anges i tabellerna ovan. Eftersom Mesh använder Unitys UNIVERSAL Render Pipeline (URP) föreslår vi att du använder billigare urp-skuggor (som Universal Render Pipeline/Baked Lit eller Universal Render Pipeline/Simple Lit). Vi förstår också värdet för anpassade skuggningar. I allmänhet försöker vi hålla våra anpassade skuggningar för större delen av miljön inom tröskelvärdena nedan:
Hörnmatematik | Fragmentmatematik | Textur |
---|---|---|
< 30 åtgärder | < 120 åtgärder | < 2 sökningar |
Viktigt!
Att räkna skuggningsåtgärder är ett ofullständigt mått för att beräkna skuggningsprestanda. En skuggningsutvecklare bör också profilera sin skuggning som körs i Mesh för att verifiera att den körs på ett bra sätt.
Om du är nyfiken på hur URLP:ns återgivningspipeline konfigureras för Mesh-appen kan du granska plattformsspecifika renderare i projektets katalog \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP .
Tröskelvärden för skript
Med Mesh kan du skapa interaktivt innehåll via visuella skript, molnskript, Mesh-fysik och/eller WebSlate. När du visar Prestandaprofiler i Unity-redigeraren visas millisekunderna (ms) gånger det tar för vissa undersystem att köras längst ned i profileraren. När text ändras från grönt till rött som anger att ett undersystem kan vara över budget. Tabellen nedan innehåller mer information om dessa budgetar.
Undersystemnamn | Maximal rambudget | beskrivning |
---|---|---|
Beteende | Ej tillämpligt | Millisekunders tid det tar att uppdatera alla lokala MonoBehaviour-skript (C# och Visual) |
Rendera | 25 % | Millisekunders tid för CPU-återgivningen av scenen |
WebSlate | Ej tillämpligt | Millisekunders tid för att uppdatera och återge alla WebSlates i scenen |
Phys Sim | 15 % | Millisekunders tid för att stega PhysX-simuleringen |
Phys Sync | 15 % | Millisekunders tid för att synkronisera alla fysikkroppar |
Phys Effx | 10 % | Millisekunders tid för att uppdatera skräddarsydda fysikbeteenden |
VS-användare | 15 % | Millisekunders tid i diagram för visuellt skript som placerats i scenen |
VS Env | 10 % | Tid på millisekunder som lagts på att uppdatera infrastrukturen för visualiseringsskript |
VS Net | 10 % | Millisekunders tid som ägnas åt att synkronisera nätverkstillståndet för visuellt skript |
Värdena för maximal bildruta som anges ovan är rekommendationer baserade på allmänt innehåll. Som utvecklare är det upp till dig att balansera dessa system för att säkerställa att din ram kan uppdateras under den tid som tilldelas.
Prestanda- och optimeringsresurser
Grunderna för grafikprestanda https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html
Universal Render Pipeline (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
Enkel direktinstansåtergivning och anpassade skuggningar https://docs.unity3d.com/Manual/SinglePassInstancing.html