Delen via


Prestatierichtlijnen voor Mesh

Prestaties

Dit artikel is een inleiding tot het begrijpen van de betekenis van prestaties bij het ontwerpen van inhoud in Mesh. Framerate is de eenvoudigste eenheid om de prestaties te rationaliseren. Normaal gesproken wordt framerate gemeten in frames per seconde (fps) of hoe vaak uw toepassing een afbeelding per seconde kan weergeven. De gebruikerservaring kan aanzienlijk worden verminderd als uw inhoud niet op een optimale framerate wordt uitgevoerd. Mesh biedt diverse hulpmiddelen en aanbevelingen om u te helpen bij het bijhouden en bereiken van kwaliteitsframerates.

De onderstaande tabel bevat de doelframerate per platform mesh ondersteunt.

Pc Android (Quest)
Vernieuwingsfrequentie bewaken (minimaal 30fps) 72fps

Eenvoudige versus complexe scènes

Net als bij alle 3D-ontwikkeling is er in Mesh een compromis tussen visuele betrouwbaarheid en prestaties. Afhankelijk van de machine waarop Mesh wordt uitgevoerd, kan uw gebruiker te maken hebben met verminderde prestaties, met name als uw scène complex is.

Denk aan prestaties zoals een financieel budget. Als u $ 100 dollar te besteden hebt, kunt u geen $ 60 uitgeven voor het weergeven van een complexe omgeving, $ 40 voor het simuleren van geavanceerde natuurkunde en $ 20 voor visuele scripts. Uiteindelijk besteedt u meer dan uw budget. Als ontwikkelaar moet u een afweging maken tussen visuele betrouwbaarheid, interactiecomplexiteit, het aantal gebruikers en andere systemen. Het Mesh-team heeft een lijst met prestatiedrempels gegenereerd, niet als regel, maar een handleiding voor ontwikkeling.

Profileringsmethodologie

Het ontwerpen van omgevingen in Mesh omvat doorgaans drie stappen.

  1. Inhoud ontwerpen in Unity
  2. Uploaden naar Microsoft Mesh
  3. Uw inhoud uitvoeren in de Mesh-app

Tijdens stap één raden we u aan om een combinatie van de Content Performance Analyzer (CPA) en Performance Profiler te gebruiken die is gevonden in het Mesh Toolkit-pakket dat is vereist voor elk Unity-project dat wordt gebruikt om een Mesh-omgeving te genereren. Tijdens stap twee wordt het CPA-hulpprogramma automatisch uitgevoerd. Ten slotte moet tijdens stap drie de profilering plaatsvinden via de ingebouwde Performance Profiler van Mesh.

Hulpprogramma's voor het analyseren van prestaties

Content Performance Analyzer (CPA)

U wordt aangeraden de Content Performance Analyzer (CPA) te gebruiken om de prestaties van uw Mesh-ervaring te maximaliseren. Het CPA-hulpprogramma kan uw inhoud statisch analyseren tijdens het ontwerpen. U kunt de CPA gebruiken om het aantal driehoeken, batches, het geheugengebruik van patronen en meer te controleren. Hiermee kunt u problemen met het optimaliseren van inhoud en mogelijkheden ondervangen voordat inhoud naar Mesh wordt geüpload.

Als u het CPA-hulpprogramma wilt uitvoeren, selecteert u Mesh Toolkit>Content Performance Analyzer in de menu-items.

Toegang tot Content Performance Analyzer via het Unity-menu

Problemen en suggesties worden gerapporteerd via een editorvenster in Unity.

Een schermopname van het venster Content Performance Analyzer

Belangrijk

Een deel van de CPA-analyse wordt automatisch uitgevoerd bij het uploaden van inhoud naar Mesh. Omdat niet alle tests automatisch kunnen worden uitgevoerd, is het verstandig om de CPA handmatig uit te voeren als onderdeel van uw ontwikkelproces.

Performance Profiler

De Performance Profiler biedt een eenvoudig venster voor het weergeven van de framesnelheid, scènecomplexiteit en geheugengebruik van uw Mesh-project op alle platforms. De Performance Profiler is toegankelijk in de Mesh-app en in de Mesh-toolkit.

Een schermafbeelding van de Performance Profiler in isolatie

Als u de Performance Profiler in de Mesh-app wilt weergeven, opent u het instellingenvenster en selecteert u Voor ontwikkelaars>Performance Profiler. De Performance Profiler wordt boven in het venster weergegeven.

Een schermafbeelding van de Performance Profiler in Mesh

Wanneer u de Performance Profiler gebruikt, zoekt u naar gemiste frames, die worden weergegeven als rode vakken, gemarkeerd met een 'x'. Gemiste frames geven aan dat uw inhoud niet de doelframerate van Mesh bereikt en mogelijk optimalisatiewerk nodig heeft. De complexiteit van scènes en het geheugengebruik worden weergegeven onder de gemiste frameindicatoren. Deze nummers kunnen aangeven waarom uw inhoud niet voldoet aan de doelframesnelheid van Mesh.

Een diagram van de metrische gegevens van Performance Profiler

Tekst op de Performance Profiler wordt rood wanneer een metrische waarde niet voldoet aan de aanbevolen prestatiedrempel van Mesh. Meer informatie over prestatiedrempels vindt u in een sectie in een procedure.

Belangrijk

Batches kunnen niet worden weergegeven in de Mesh-app. Ze zijn alleen beschikbaar in de Unity-editor.

Houd ook de onderste geheugenbalk in de gaten om ervoor te zorgen dat het geheugengebruik niet snel verandert of de geheugenlimiet van de toepassing nadert.

Als u de Performance Profiler in de Unity-editor wilt weergeven, moet u ervoor zorgen dat u het Mesh Emulator Setup-onderdeel in uw scène hebt. Zorg ervoor dat de instelling Aantal eerste schermen nul is. Als dit een of hoger is, kunt u tijdens het afspelen niet in-/uitschakelen op de Performance Profiler.

Een schermafbeelding van het dialoogvenster Mesh Emulator instellen

Klik op de afspeelknop van Unity om de afspeelmodus in te schakelen. Schakel de Performance Profiler in via de toets 'v'. De Performance Profiler wordt boven in het spelvenster weergegeven.

Een schermopname van de Performance Profiler in unity-editor

Belangrijk

Wanneer u de Performance Profiler in de Unity-editor bekijkt, gleam u meer informatie, zoals het aantal batchs en milliseconden dat het duurt voordat bepaalde subsystemen worden uitgevoerd. Houd er rekening mee dat deze metrische gegevens een relatieve benadering van prestaties en uiteindelijke profilering zijn binnen de Mesh-app.

Als u benieuwd bent wat de milliseconden onder aan de Performance Profiler zijn, kunt u die informatie vinden in de sectie prestatiedrempels .

Andere hulpprogramma's

Zowel de CPA als de Performance Profiler zijn aangepast voor Mesh, maar er zijn ook een aantal geweldige hulpprogramma's voor het profileren van inhoud in Unity:

Prestatiedrempels

Optimaliseren voor prestaties kan een taak zijn, afhankelijk van het scenario waarvoor u ontwikkelt en de ervaring die u wilt bereiken. Het weergeven van een scène in Mesh is een direct gevolg van hoe de inhoud van de omgeving wordt geschreven. Hieronder ziet u suggesties voor onze huidige platforms.

Drempelwaarden voor pc-rendering

Polycount Batches Naverwerking
<~500k driehoeken ~200 batches Uitgeschakeld
Texturen Lightmaps Skybox-resolutie
< ~160 MB < ~80 MB 2048x4096

Drempelwaarden voor Android-rendering (Quest)

Polycount Batches Naverwerking
<~80k driehoeken ~50 batches Uitgeschakeld
Texturen Lightmaps Skybox-resolutie
< ~16 MB < ~20 MB 1024x2048

U ziet mogelijk dat arceringsbeperkingen niet zijn opgegeven in de bovenstaande tabellen. Omdat Mesh gebruikmaakt van URP (Universal Render Pipeline) van Unity , raden we u aan om goedkopere out-of-the-box URP-shaders (zoals Universal Render Pipeline/Baked Lit of Universal Render Pipeline/Simple Lit) te gebruiken. We begrijpen ook de waarde van aangepaste shaders. Over het algemeen proberen we onze aangepaste shaders voor de meeste omgevingen binnen de onderstaande drempelwaarden te houden:

Hoekpuntberekening Wiskundige fragmenten Textuur
< 30 bewerkingen < 120 bewerkingen < 2 zoekopdrachten

Belangrijk

Het tellen van shader-bewerkingen heeft onvolmaakte metrische gegevens voor het berekenen van de shaderprestaties. Een shader-ontwikkelaar moet ook de shader profilen die wordt uitgevoerd in Mesh om te controleren of deze actief wordt uitgevoerd.

Als u wilt weten hoe de renderpijplijn van de URP is geconfigureerd voor de Mesh-app, kunt u de platformspecifieke renderers controleren in de map \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP .

Drempelwaarden voor scripts

Met Mesh kunt u interactieve inhoud maken via visuele scripts, cloudscripting, Mesh Physics en/of WebSlate. Wanneer u de Performance Profiler in de Unity-editor bekijkt, worden de milliseconden (ms) keer dat bepaalde subsystemen moeten worden uitgevoerd, weergegeven onder aan de profiler. Wanneer tekst verandert van groen in rood, wat aangeeft dat een subsysteem boven het budget kan zijn. De onderstaande tabel bevat meer informatie over deze budgetten.

Subsysteemnaam Maximumframebudget Beschrijving
Gedrag N.v.t. Milliseconden die nodig is om alle lokale MonoBehaviour-scripts (C# en Visual) bij te werken
Weergeven 25% Milliseconden voor de CPU-weergave van de scène
WebSlate N.v.t. Milliseconden om webslates in de scène bij te werken en weer te geven
Phys Sim 15% Tijd van milliseconden om de PhysX-simulatie te doorlopen
Phys Sync 15% Milliseconden tijd om alle fysica-lichamen te synchroniseren
Phys Effx 10% Milliseconden tijd voor het bijwerken van op maat gemaakte fysicagedrag
VS-gebruiker 15% Milliseconden besteed aan visualscriptgrafieken die in de scène zijn geplaatst
VS Env 10% Milliseconden besteed aan het bijwerken van de infrastructuur voor visualscripts
VS Net 10% Milliseconden besteed aan het synchroniseren van de netwerkstatus van het Visual Script

De bovenstaande waarden 'Max Frame Percentage' zijn aanbevelingen op basis van algemene inhoud. Als ontwikkelaar is het aan u om deze systemen te verdelen om ervoor te zorgen dat uw frame kan worden bijgewerkt in de tijd die is toegewezen.

Resources voor prestaties en optimalisatie

Basisprincipes van grafische prestaties https://docs.unity3d.com/Manual/OptimizingGraphicsPerformance.html

URP (Universal Render Pipeline) 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 met één pass en aangepaste shaders https://docs.unity3d.com/Manual/SinglePassInstancing.html