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.
- Inhoud ontwerpen in Unity
- Uploaden naar Microsoft Mesh
- 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.
Problemen en suggesties worden gerapporteerd via een editorvenster in Unity.
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.
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.
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.
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.
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.
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:
- Profiler van Unity
- Frame Debugger van Unity
- RenderDoc (BELANGRIJK: RenderDoc kan alleen opnamen uitvoeren vanuit de Unity-editor. Mesh-app-builds werken niet).
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