Dela via


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.

  1. Skapa innehåll i Unity
  2. Ladda upp till Microsoft Mesh
  3. 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.

Åtkomst till innehålls-Analizator performansi via Unity-menyn

Problem och förslag rapporteras via ett redigeringsfönster i Unity.

En skärmbild av fönstret Innehåll Analizator performansi

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.

En skärmbild av Performance Profiler isolerat

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.

En skärmbild av Performance Profiler i Mesh

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.

Ett diagram över måtten Performance Profiler

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.

En skärmbild av dialogrutan Mesh-emulatorkonfiguration

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.

En skärmbild av Performance Profiler i Unity-redigeraren

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:

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