Leistungsrichtlinien für Gitter
Leistung
Dieser Artikel enthält eine Einführung in die Bedeutung der Leistung beim Erstellen von Inhalten in Mesh. Framerate ist die einfachste Einheit, um die Leistung zu rationalisieren. Normalerweise wird die Framerate in "Frames pro Sekunde" (fps) gemessen oder wie oft die Anwendung ein Bild pro Sekunde rendern kann. Die Benutzererfahrung eines Benutzers kann erheblich beeinträchtigt werden, wenn Ihre Inhalte nicht mit einer optimalen Framerate ausgeführt werden. Um Ihnen zu helfen, die Qualität der Framerate nachzuverfolgen und zu erreichen, bietet Mesh eine Vielzahl von Tools und Empfehlungen.
In der folgenden Tabelle sind die Zielframerate pro Plattform-Mesh aufgeführt.
PC | Android (Quest) |
---|---|
Überwachen der Aktualisierungsrate (mindestens 30fps) | 72fps |
Einfache und komplexe Szenen
Wie bei allen 3D-Entwicklungen gibt es in Mesh einen Kompromiss zwischen Visueller Genauigkeit und Leistung. Je nach Computer, auf dem Mesh ausgeführt wird, kann die Leistung des Benutzers verringert werden, insbesondere, wenn Ihre Szene komplex ist.
Stellen Sie sich die Leistung wie ein Finanzbudget vor. Wenn Sie 100 US-Dollar ausgeben müssen, können Sie nicht 60 $ ausgeben, um eine komplexe Umgebung zu rendern, 40 $ die erweiterte Physik simulieren und 20 $ für visuelle Skripts – Sie würden enden ausgaben über Ihr Budget. Als Entwickler müssen Sie kompromisse zwischen Visueller Genauigkeit, Interaktionskomplexität, Anzahl der Benutzer und anderen Systemen machen. Das Mesh-Team hat eine Liste der Leistungsschwellenwerte generiert, nicht als Regel, sondern einen Leitfaden für die Entwicklung.
Profilerstellungsmethode
Das Erstellen von Umgebungen in Mesh umfasst im Allgemeinen drei Schritte.
- Erstellen von Inhalten in Unity
- Hochladen in Microsoft Mesh
- Ausführen von Inhalten in der Mesh-App
In Schritt 1 empfehlen wir, eine Mischung aus der Inhalts-Leistungsanalyse (CPA) und dem Performance Profiler im Mesh-Toolkit-Paket zu verwenden, das für jedes Unity-Projekt erforderlich ist, um eine Mesh-Umgebung zu generieren. In Schritt 2 wird das CPA-Tool automatisch ausgeführt. Schließlich sollte die Profilerstellung in Schritt 3 über den integrierten Performance Profiler von Mesh erfolgen.
Tools zur Analyse der Leistung
Inhalts-Leistungsanalyse (CPA)
Es wird empfohlen, die Inhalts-Leistungsanalyse (CPA) zu verwenden, um die Leistung Ihrer Gittererfahrung zu maximieren. Das CPA-Tool kann Ihre Inhalte zur Erstellungszeit statisch analysieren. Sie können das CPA verwenden, um Dreiecksanzahlen, Batches, Texturspeicherauslastung und vieles mehr zu überwachen. Auf diese Weise können Sie Probleme mit der Inhaltsoptimierung und -verkaufschancen abfangen, bevor Inhalte in Mesh hochgeladen werden.
Um das CPA-Tool auszuführen, wählen Sie "Mesh Toolkit>Content Leistungsanalyse" aus den Menüelementen aus.
Probleme und Vorschläge werden über ein Editorfenster in Unity gemeldet.
Wichtig
Ein Teil der CPA-Analysegeräte wird beim Hochladen von Inhalten in Mesh automatisch ausgeführt. Da nicht alle Tests automatisch ausgeführt werden können, ist es gut, das CPA manuell als Teil Ihres Entwicklungsprozesses auszuführen.
Leistungs-Profiler
Der Performance Profiler bietet ein einfaches Fenster zum Anzeigen der Framerate, Szenenkomplexität und Speicherauslastung Ihres Mesh-Projekts auf allen Plattformen. Auf den Performance Profiler kann innerhalb der Mesh-App und im Mesh-Toolkit zugegriffen werden.
Um den Performance Profiler in der Mesh-App anzuzeigen, öffnen Sie den Einstellungsbereich, und wählen Sie für Entwickler>Performance Profiler aus. Der Performance Profiler wird in der oberen Mitte des Fensters angezeigt.
Wenn Sie den Performance Profiler verwenden, suchen Sie nach verpassten Frames, die als rote Felder angezeigt werden, die mit einem "x" gekennzeichnet sind. Verpasste Frames deuten darauf hin, dass Ihre Inhalte nicht auf die Zielframerate von Mesh treffen und möglicherweise Optimierungen benötigen. Szenenkomplexität und Speicherauslastung werden unter den verpassten Frameindikatoren angezeigt. Diese Zahlen geben möglicherweise an, warum Ihre Inhalte nicht die Zielframerate von Mesh erfüllen.
Text im Performance Profiler wird rot, wenn eine Metrik den empfohlenen Leistungsschwellenwert von Mesh nicht erfüllt. Weitere Details zu Leistungsschwellenwerten finden Sie in einem Weiteren Abschnitt.
Wichtig
Batches können nicht in der Mesh-App angezeigt werden. Sie sind nur im Unity-Editor verfügbar.
Sie sollten auch die untere Speicherleiste im Auge behalten, um sich zu vergewissern, dass sich die Speicherauslastung nicht schnell ändert oder sich der Speichergrenze der Anwendung nähert.
Um den Performance Profiler im Unity-Editor anzuzeigen, stellen Sie sicher, dass Sie über die Setupkomponente des Mesh-Emulators in Ihrer Szene verfügen. Stellen Sie sicher, dass die Einstellung " Anfangsbildschirmanzahl " null ist. Wenn es sich um einen oder einen höheren Wert handelt, können Sie beim Spielen auf dem Performance Profiler nicht umschalten.
Klicken Sie auf die Wiedergabeschaltfläche von Unity, um in den Wiedergabemodus zu wechseln, schalten Sie den Performance Profiler über die Taste "v" ein. Der Performance Profiler wird in der oberen Mitte des Spielfensters angezeigt.
Wichtig
Wenn Sie den Performance Profiler im Unity-Editor anzeigen, werden weitere Informationen angezeigt, z. B. Batchanzahl und Millisekunden, bis bestimmte Subsysteme ausgeführt werden. Beachten Sie, dass diese Metriken eine relative Annäherung der Leistung und der endgültigen Profilerstellung innerhalb der Mesh-App sein sollten.
Wenn Sie neugierig sind, was die Millisekunden am unteren Rand des Performance Profiler messen, finden Sie diese Informationen im Abschnitt "Leistungsschwellenwerte ".
Weitere Tools
Sowohl der CPA- als auch der Performance Profiler sind für Mesh benutzerdefinierte, aber es gibt auch eine Handvoll großartige Tools für Profilerstellungsinhalte in Unity:
- Profiler von Unity
- Framedebugger von Unity
- RenderDoc (WICHTIG: RenderDoc kann nur Aufzeichnungen aus dem Unity-Editor ausführen. Mesh-App-Builds funktionieren nicht.
Leistungsschwellenwerte
Die Optimierung der Leistung kann je nach szenario, für das Sie sich entwickeln, und der Erfahrung, die Sie erreichen möchten, ein Ausgleich darstellen. Das Rendern einer Szene in Mesh ist eine direkte Folge der Erstellung des Inhalts der Umgebung. Nachfolgend finden Sie Renderingvorschläge für unsere aktuellen Plattformen.
PC-Renderingschwellenwerte
Polycount | Chargen | Nachbearbeitung |
---|---|---|
<~500k Dreiecke | ~200 Batches | Disabled |
Texturen | Lightmaps | Skybox-Auflösung |
< ~160 MB | < ~80 MB | 2048x4096 |
Android (Quest)-Renderingschwellenwerte
Polycount | Chargen | Nachbearbeitung |
---|---|---|
<~80k Dreiecke | ~50 Batches | Disabled |
Texturen | Lightmaps | Skybox-Auflösung |
< ~16 MB | < ~20 MB | 1024 x 2048 |
Möglicherweise stellen Sie fest, dass Shadereinschränkungen in den obigen Tabellen nicht angegeben sind. Da Mesh die Universal Render Pipeline (URP) von Unity verwendet, empfehlen wir, günstigere out-of-the-box-URP-Shader (wie Universal Render Pipeline/Baked Lit oder Universal Render Pipeline/Simple Lit) zu verwenden. Wir verstehen auch den Wert von benutzerdefinierten Shadern. Im Allgemeinen versuchen wir, unsere benutzerdefinierten Shader für die meisten der Umgebung innerhalb der folgenden Schwellenwerte beizubehalten:
Vertexmathematik | Fragmentmathematik | Struktur |
---|---|---|
< 30 Vorgänge | < 120 Vorgänge | < 2 Nachschlagevorgänge |
Wichtig
Das Zählen von Shadervorgängen ist in unvollkommener Metrik für die Berechnung der Shaderleistung. Ein Shaderentwickler sollte auch den shader profilieren, der in Mesh ausgeführt wird, um sicherzustellen, dass er ausgeführt wird.
Wenn Sie wissen möchten, wie die RENDERpipeline des URP für die Mesh-App konfiguriert ist, können Sie die plattformspezifischen Renderer im Verzeichnis \Library\PackageCache\com.microsoft.mesh.toolkit\mesh.toolkit.uploader\Assets\URP überprüfen.
Skriptingschwellenwerte
Mit Mesh können Sie interaktive Inhalte über visuelle Skripts, Cloudskripting, Gitterphysik und/oder WebSlate erstellen. Wenn Sie den Performance Profiler im Unity-Editor anzeigen, wird die Millisekundenzeit (ms) angezeigt, bis bestimmte Subsysteme ausgeführt werden, am unteren Rand des Profilers. Wenn sich Text von Grün in Rot ändert, das angibt, dass ein Subsystem über dem Budget stehen könnte. Die folgende Tabelle enthält weitere Informationen zu diesen Budgets.
Name des Subsystems | Max Frame Budget | Beschreibung |
---|---|---|
Verhalten | N/V | Millisekunden benötigte Zeit zum Aktualisieren aller lokalen MonoBehaviour-Skripts (C# und Visual) |
Rendern | 25 % | Millisekundenzeit für das CPU-Rendern der Szene |
WebSlate | N/V | Millisekundenzeit zum Aktualisieren und Rendern von WebSlates in der Szene |
Phys Sim | 15 % | Millisekundenzeit zum Schritt der PhysX-Simulation |
Phys Sync | 15 % | Millisekundenzeit zum Synchronisieren aller physikalischen Körper |
Phys Effx | 10 % | Millisekundenzeit zum Aktualisieren maßgeschneiderter physikalischer Verhaltensweisen |
VS-Benutzer | 15 % | Millisekunden, die in Visual Script-Diagrammen verbracht wurden, die in der Szene platziert wurden |
VS Env | 10 % | Millisekundenaufwand für die Aktualisierung der Visual Script-Infrastruktur |
VS Net | 10 % | Millisekunden für die Synchronisierung des Visual Script-Netzwerkzustands |
Die oben aufgeführten Werte für "Max Frame Percentage" sind Empfehlungen, die auf generischen Inhalten basieren. Als Entwickler müssen Sie diese Systeme ausgleichen, um sicherzustellen, dass Ihr Frame in der Zeit aktualisiert werden kann.
Leistungs- und Optimierungsressourcen
Grundlagen der Grafikleistung 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
Instanziertes Rendering und benutzerdefinierte Shader mit einem einzelnen Pass https://docs.unity3d.com/Manual/SinglePassInstancing.html