Das Samsung Galaxy XR ist da, powered by Android XR! Dieser Blogpost ist Teil unserer Android XR Spotlight Week, in der wir Ressourcen wie Blogposts, Videos und Beispielcode bereitstellen, die Ihnen helfen sollen, Ihre Apps für Android XR zu entwickeln und vorzubereiten.
Diese Woche hat Samsung das Galaxy XR auf den Markt gebracht, das in Zusammenarbeit mit Google und Qualcomm entwickelt wurde. Das ist eine aufregende Zeit für Entwickler. Wir möchten Ihnen helfen, die bestmögliche Leistung aus Ihrer XR-App herauszuholen.
Eine schlechte Leistung in Spielen und Apps auf Nicht-XR-Geräten kann für Nutzer frustrierend sein. In der Welt von XR ist Leistung jedoch nicht nur optional, sondern grundlegend für den Erfolg Ihrer App. Wenn Sie Ihr Ziel für die Framerate in XR verfehlen, kann das viel ernstere Probleme wie Bewegungskrankheit verursachen.
In diesem Leitfaden erfahren Sie mehr über die wichtigsten Leistungsoptimierungen, die Sie für die Android XR-Entwicklung kennen müssen. Sie lernen, mit welchen Funktionen Sie die größte Leistungssteigerung erzielen, wann Sie sie verwenden sollten und wie sie zusammenarbeiten, um Ihnen zu helfen, Ihre Ziele für die Framerate zu erreichen.
Das sind unsere Ziele:
- Minimum: 72 fps (Teil unserer Richtlinien zur Spielqualität)
- Optional : 90 fps mit einem Budget von 11 ms pro Frame
Weitere Informationen dazu, warum es wichtig ist, eine so hohe Framerate beizubehalten, finden Sie in unseren Leistungsrichtlinien.
XR-spezifische Leistungsfunktionen
Wir beginnen mit zwei XR-spezifischen Leistungsfunktionen: Foveated Rendering und Vulkan Subsampling.
Foveated Rendering
Foveated Rendering ist eine Optimierung mit zwei Modi. Der erste ist ein statischer Modus , bei dem die Mitte des Bildschirms mit einer höheren Auflösung gerendert wird. Die Auflösung wird dann immer weiter verringert, je weiter Sie nach außen schauen.
Der zweite ist der Eye-Tracking-Modus , bei dem der Bereich, auf den Sie schauen, detailliert gerendert wird, während die Qualität in Ihrem peripheren Sichtfeld reduziert wird. Er ahmt im Wesentlichen die Funktionsweise des menschlichen Sehens nach, bei dem wir nur im Bereich, auf den wir uns konzentrieren, feine Details sehen.
Foveated Rendering reduziert die GPU-Arbeitslast erheblich, ohne die wahrgenommene Bildqualität für den Nutzer zu beeinträchtigen. Der Vorteil von Foveated Rendering ist, dass Nutzer die reduzierte Qualität im peripheren Sichtfeld nicht bemerken, Ihre GPU aber die verbesserte Leistung sicherlich bemerken wird.
Stellen Sie sich vor, Sie entwickeln ein Museumserlebnis mit komplexen 3D-Artefakten. Ohne Foveated Rendering hätten Sie Schwierigkeiten, 90 fps beizubehalten, da alles im Sichtfeld gerendert werden muss. Mit Foveated Rendering können Sie die Details mit hoher Polygonzahl dort beibehalten, wo der Nutzer hinsieht, aber die Hintergrundumgebung wird mit einer geringeren Qualität gerendert. Ihre Nutzer werden den Unterschied nicht bemerken, aber Sie haben mehr Spielraum, um Ihrer Szene mehr Details hinzuzufügen.
Vulkan Subsampling
Vulkan Subsampling ist der beste Freund von Foveated Rendering. Während Foveated Rendering entscheidet, was mit unterschiedlichen Qualitätsstufen gerendert werden soll, kümmert sich Vulkan Subsampling darum, wie die verschiedenen Qualitätsstufen effizient gerendert werden , indem Fragment Density Maps verwendet werden.
In Kombination mit Foveated Rendering bietet Vulkan Subsampling zusätzliche 0, 5 ms Leistung. Außerdem werden gezackte Kanten im peripheren Sichtfeld geglättet, wodurch das Gesamtbild sauberer aussieht.
In einem Flugsimulatorspiel, in dem sich Nutzer auf Instrumente und Bedienelemente konzentrieren, werden durch die Kombination von Foveated Rendering und Vulkan Subsampling die detaillierten Bedienelemente scharf gerendert, während die periphere Cockpitstruktur weniger Ressourcen verbraucht. Die zusätzlichen 0,5 ms klingen nicht viel, können aber den Unterschied zwischen einem zusätzlichen interaktiven Element und Frame-Drops in intensiven Momenten ausmachen.
GPU-Funktionen für komplexe Szenen
Neben Foveated Rendering und Vulkan Subsampling gibt es einige GPU-Funktionen, die unnötige Belastungen durch intelligentes Instancing und Culling reduzieren. Diese sind besonders effektiv für komplexe Szenen mit wiederholter Geometrie oder erheblicher Verdeckung.
GPU Resident Drawer
Der GPU Resident Drawer verwendet automatisch GPU-Instancing, um Draw-Calls zu reduzieren und CPU-Verarbeitungszeit freizugeben. Anstatt dass die CPU die GPU einzeln über jedes Objekt informiert, fasst die GPU ähnliche Objekte zusammen.
Diese Funktion ist am effektivsten für große Szenen mit wiederholten Meshes, z. B. Bäume in einem Wald, Möbel in einem Bürogebäude oder Requisiten in einer Umgebung.
Stellen Sie sich eine Waldszene mit 200 Bäumen vor, die dasselbe Basis-Mesh verwenden. Ohne den GPU Resident Drawer gibt es 200 Draw-Calls, die die GPU belasten und so die CPU entlasten. Wenn Sie diese Funktion aktivieren, werden die Bäume von der GPU intelligent instanziert, wodurch die Anzahl der Draw-Calls auf 5 bis 10 reduziert werden sollte. Das ist eine massive GPU-Einsparung, die Sie dann in die Spiellogik oder in physikalische Berechnungen investieren können.
GPU Occlusion Culling
GPU Occlusion Culling verwendet die GPU anstelle der CPU , um verdeckte Objekte zu identifizieren und das Rendering zu überspringen. Es erkennt automatisch, was hinter anderen Objekten verdeckt ist, sodass Sie Ihre GPU nicht für Dinge verschwenden, die der Nutzer nicht sehen kann.
Diese Funktion ist besonders leistungsstark in Innenräumen mit mehreren Räumen, dichten Umgebungen oder Architekturszenen, in denen Wände, Böden und Objekte die Sicht auf natürliche Weise verdecken.
Nehmen wir an, Sie entwickeln ein Haus mit mehreren Räumen. Wenn sich der Nutzer im Wohnzimmer befindet, warum sollten Sie dann GPU-Zyklen für das Rendering der detaillierten Küche verschwenden, die vollständig hinter einer Wand verborgen ist? GPU Occlusion Culling überspringt automatisch das Rendering dieser verdeckten Objekte, sodass Sie mehr Leistungsbudget für das haben, was tatsächlich sichtbar ist.
Leistung im Blick behalten
Es reicht nicht aus, diese Funktionen einfach nur zu verwenden. Sie müssen auch Ihre Optimierungen messen, damit Sie ihre Auswirkungen quantifizieren und überprüfen können, ob Ihre Änderungen tatsächlich funktionieren.
Performance Metrics API
Die Performance Metrics API bietet Echtzeit-Monitoring der Speichernutzung, der CPU-Leistung und der GPU-Leistung Ihrer Apps. Sie liefert umfassende Daten aus den Compositor- und Laufzeitebenen, sodass Sie genau sehen können, was in Ihrer Anwendung passiert.
Erstellen Sie eine Baseline, bevor Sie Änderungen vornehmen, wenden Sie eine Optimierung an, messen Sie die Auswirkungen und wiederholen Sie den Vorgang. Mit diesem datengesteuerten Ansatz wissen Sie, dass Sie die Leistung tatsächlich verbessern, anstatt nur zu raten.
Bevor Sie Foveated Rendering aktivieren, beträgt die GPU-Frame-Zeit möglicherweise 13 ms, was über Ihrem Budget von 11 ms liegt. Aktivieren Sie Foveated Rendering, messen Sie noch einmal und hoffentlich sinkt die Zeit auf 9 ms. Das sind 4 ms Spielraum, die Sie gewonnen haben, um Ihrer Szene mehr Details hinzuzufügen, die Bildqualität an anderer Stelle zu verbessern oder einfach eine flüssigere Leistung für eine größere Bandbreite von Inhalten zu gewährleisten.
Ohne diese Messwerte optimieren Sie im Blindflug. Die Performance Metrics API liefert Ihnen die Wahrheit darüber, was für Ihren spezifischen Anwendungsfall tatsächlich hilfreich ist.
Frame Debugger
Der Frame Debugger ist das in Unity integrierte Tool, mit dem Sie genau nachvollziehen können, wie Ihre Szene Frame für Frame gerendert wird. Er zeigt Ihnen die Reihenfolge der Draw-Calls und Sie können sie durchgehen, um zu überprüfen, ob Ihre Optimierungen korrekt funktionieren.
Möchten Sie bestätigen, dass der SRP Batcher funktioniert? Suchen Sie im Frame Debugger nach Einträgen vom Typ „RenderLoopNewBatcher“. Möchten Sie prüfen, ob der GPU Resident Drawer korrekt batcht? Suchen Sie nach Einträgen vom Typ „Hybrid Batch Group“. Diese visuellen Bestätigungen helfen Ihnen zu verstehen, ob Ihre Optimierungseinstellungen tatsächlich wirksam sind.
Gehen Sie die ersten 50 Draw-Calls Ihrer Szene durch. Wenn Sie sehen, dass ähnliche Objekte einzeln anstatt in Batches gerendert werden, bedeutet das, dass Ihr Instancing oder Batching nicht korrekt funktioniert. Der Frame Debugger macht diese Probleme sofort sichtbar, sodass Sie sie beheben können.
Zusätzliche Optimierungen
Neben den oben beschriebenen Optimierungen werden in unserem vollständigen Leistungsleitfaden auch einige weitere Optimierungen behandelt. Hier eine kurze Zusammenfassung:
- URP-Einstellungen:Deaktivieren Sie HDR und die Nachbearbeitung für mobiles XR. Diese Funktionen haben im Vergleich zu ihren Leistungskosten auf mobiler Hardware nur minimale visuelle Auswirkungen. Sie erzielen also messbare Leistungssteigerungen mit kaum wahrnehmbaren visuellen Unterschieden.
- SRP Batcher:Reduziert den CPU-Overhead für Szenen mit vielen Materialien, die dieselbe Shader-Variante verwenden. Indem Sie die Änderungen des Renderstatus zwischen Draw-Calls minimieren, können Sie die für das Rendering benötigte CPU-Zeit erheblich reduzieren.
- Bildwiederholrate:Dynamische Anpassung zwischen 72 fps und 90 fps je nach Komplexität der Szene. Reduzieren Sie die Framerate bei komplexen Sequenzen, um die Stabilität zu erhalten, und erhöhen Sie sie dann bei einfacheren Momenten für eine extrem flüssige Interaktion.
- Tiefen-/opake Texturen:Deaktivieren Sie diese, es sei denn, sie sind speziell für Shader-Effekte erforderlich. Sie verursachen unnötige GPU-Kopieroperationen, die Leistung verschwenden, ohne für die meisten Anwendungen einen Nutzen zu bringen.
- URP-Renderskala: Mit dieser Einstellung können Sie mit einer reduzierten Auflösung rendern, um die Leistung zu verbessern, oder das Rendering hochskalieren, um die visuelle Qualität zu erhöhen.
Eine detaillierte Anleitung für diese und weitere Optimierungen finden Sie in unserem vollständigen Unity-Leistungsleitfaden für Android XR.
Fazit
Die Leistung Ihrer XR-App ist nicht nur ein technisches Kontrollkästchen. Sie macht den Unterschied zwischen einem komfortablen, ansprechenden Erlebnis und einem, bei dem sich Nutzer krank oder unwohl fühlen. Die von uns behandelten Optimierungen sind Ihr Toolkit, um diese kritischen Ziele für die Framerate auf den neuesten XR-Geräten zu erreichen.
Hier ist Ihr Fahrplan:
- Beginnen Sie mit Foveated Rendering und Vulkan Subsampling. Diese XR-spezifischen Funktionen führen zu sofortigen und spürbaren GPU-Einsparungen.
- Fügen Sie den GPU Resident Drawer und Occlusion Culling hinzu, wenn Sie komplexe Szenen mit wiederholter Geometrie oder Innenräume haben.
- Behalten Sie mit der Performance Metrics API alles im Blick, um sicherzustellen, dass Ihre Änderungen tatsächlich helfen.
- Sehen Sie sich zusätzliche URP-Optimierungen an, um mehr Leistungsspielraum zu erhalten.
Es ist wichtig, kontinuierlich zu messen und zu iterieren. Nicht jede Optimierung ist für jedes Projekt gleichermaßen von Vorteil. Verwenden Sie daher die Performance Metrics API, um eine klare Vorstellung davon zu erhalten, was für Ihren spezifischen Anwendungsfall tatsächlich hilfreich ist.
Nächste Schritte: Kenntnisse und Fähigkeiten ausbauen
Möchten Sie noch mehr erfahren? Hier finden Sie weitere Informationen:
- Unity-Leistungsleitfaden für Android XR : Vollständige Schritt-für-Schritt-Anleitung für die Implementierung aller hier behandelten Funktionen.
- Erste Schritte mit Unity und Android XR : Richten Sie Ihre Entwicklungsumgebung ein und beginnen Sie mit der Entwicklung.
- Android XR-Entwicklerdokumentation : Umfassende Leitfäden für alle Android XR-Funktionen
Weiterlesen
-
Produktneuheiten
Der KI-Workflow und die Anforderungen jedes Entwicklers sind einzigartig. Daher ist es wichtig, dass Sie selbst entscheiden können, wie KI Ihre Entwicklung unterstützt. Im Januar haben wir die Möglichkeit eingeführt, ein beliebiges lokales oder Remote-KI-Modell auszuwählen, um die KI-Funktionen in Android Studio zu nutzen.
Matthew Warner • Lesezeit: 2 Minuten
-
Produktneuheiten
Android Studio Panda 3 ist jetzt stabil und kann für die Produktion verwendet werden. Mit dieser Version haben Sie noch mehr Kontrolle und Anpassungsmöglichkeiten für Ihre KI-gestützten Workflows. So können Sie noch einfacher hochwertige Android-Apps entwickeln.
Matt Dyor • Lesezeit: 3 Minuten
-
Produktneuheiten
Wir bei Google möchten die leistungsstärksten KI-Modelle direkt auf die Android-Geräte in Ihrer Tasche bringen. Heute freuen wir uns, die Veröffentlichung unseres neuesten hochmodernen Open-Source-Modells bekannt zu geben: Gemma 4.
Caren Chang, David Chou • Lesezeit: 3 Minuten
Auf dem Laufenden bleiben
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.