Das Samsung Galaxy XR ist da und basiert auf Android XR. Dieser Blogbeitrag ist Teil unserer Android XR Spotlight Week, in der wir Ressourcen wie Blogbeiträge, 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 und 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 den Nutzer frustrierend sein. In der Welt von XR ist die Leistung jedoch nicht nur optional, sondern grundlegend für den Erfolg Ihrer App. Wenn Sie Ihr Framerate-Ziel in XR verfehlen, kann dies zu weitaus schwerwiegenderen Problemen wie Reisekrankheit führen.
In diesem Leitfaden erfahren Sie mehr über die wichtigsten Leistungsoptimierungen, die Sie für die Android XR-Entwicklung kennen müssen. Sie erfahren, welche Funktionen die größten Leistungssteigerungen ermöglichen, wann Sie sie verwenden sollten und wie sie zusammenarbeiten, damit Sie Ihre Ziel-Frame-Raten erreichen.
Das ist unser Ziel:
- Mindestanforderung : 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 Leistungsmerkmale
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, in dem die Mitte des Bildschirms mit einer höheren Auflösung gerendert wird. Die Auflösung wird dann immer geringer, je weiter Sie nach außen schauen.
Der zweite Modus ist der Eye-Tracking-Modus, in dem der Bereich, auf den Sie gerade schauen, in voller Detailtiefe gerendert wird, während die Qualität in Ihrem peripheren Sichtfeld reduziert wird. Es ahmt im Grunde die Funktionsweise des menschlichen Sehens nach, bei dem wir nur in dem Bereich, auf den wir uns konzentrieren, feine Details sehen.
Durch Foveated Rendering wird die GPU-Arbeitslast deutlich reduziert, ohne dass die wahrgenommene Bildqualität für den Nutzer darunter leidet. Der Vorteil von Foveated Rendering ist, dass Nutzer die geringere Qualität im peripheren Sichtfeld nicht bemerken, die GPU aber von der verbesserten Leistung profitiert.
Stellen Sie sich vor, Sie erstellen eine Museumsanwendung mit komplexen 3D-Artefakten. Ohne Foveated Rendering wäre es schwierig, 90 FPS zu erreichen, wenn alles im Sichtfeld gerendert wird. Mit Foveated Rendering können Sie die hochauflösenden Details beibehalten, auf die der Nutzer schaut, während die Hintergrundumgebung in geringerer Qualität gerendert wird. Ihre Nutzer werden den Unterschied nicht bemerken, aber Sie haben mehr Spielraum, um Ihrer Szene mehr Details hinzuzufügen.
Vulkan-Subsampling
Vulkan-Subsampling ist die beste Ergänzung für Foveated Rendering. Während beim Foveated Rendering entschieden wird, was in den verschiedenen Qualitätsstufen gerendert werden soll, wird beim Vulkan-Subsampling mithilfe von Fragment Density Maps festgelegt, wie die verschiedenen Qualitätsstufen effizient gerendert werden.
In Kombination mit Foveated Rendering bietet Vulkan Subsampling zusätzliche 0, 5 ms Leistung. Außerdem werden gezackte Ränder im peripheren Sichtfeld geglättet, wodurch das Gesamtbild klarer wirkt.
In einem Flugsimulator, in dem sich Nutzer auf Instrumente und Bedienelemente konzentrieren, können durch die Kombination von Foveated Rendering und Vulkan-Subsampling die detaillierten Bedienelemente scharf gerendert werden, während die periphere Cockpitstruktur weniger Ressourcen verbraucht. Die zusätzlichen 0,5 ms klingen nicht nach viel, aber sie können den Unterschied ausmachen, ob Platz für ein zusätzliches interaktives Element ist oder in intensiven Momenten Frames verloren gehen.
GPU-Funktionen für komplexe Szenen
Neben Foveated Rendering und Vulkan Subsampling gibt es einige GPU-Funktionen, die durch intelligentes Instanziieren und Culling unnötige Belastungen reduzieren. Sie sind besonders effektiv für komplexe Szenen mit sich wiederholender Geometrie oder erheblicher Verdeckung.
GPU-Resident-Drawer
Im GPU-Resident Drawer wird automatisch GPU-Instancing verwendet, um Draw-Aufrufe zu reduzieren und CPU-Verarbeitungszeit freizugeben. Anstatt die CPU die GPU über jedes Objekt einzeln informieren zu lassen, fasst die GPU ähnliche Objekte zusammen.
Diese Funktion ist am effektivsten für große Szenen mit sich wiederholenden Meshes, z. B. Bäume in einem Wald, Möbel in einem Bürogebäude oder Requisiten, die in einer Umgebung verteilt sind.
Stellen Sie sich eine Waldszene mit 200 Bäumen vor, die dasselbe Basismesh verwenden. Ohne den GPU-residenten Drawer werden 200 Draw-Aufrufe auf der GPU ausgeführt, wodurch die CPU entlastet wird. Wenn Sie dieses Feature aktivieren, werden die Bäume von der GPU intelligent instanziiert, was die Anzahl der Draw Calls auf 5 bis 10 reduzieren sollte. Das ist eine enorme GPU-Einsparung, die Sie dann in die Spiellogik oder physikalische Berechnungen investieren können.
GPU-Occlusion Culling
Beim GPU-Occlusion Culling wird die GPU anstelle der CPU verwendet, um verborgene Objekte zu identifizieren und das Rendern 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 nützlich in Innenräumen mit mehreren Zimmern, in dichten Umgebungen oder in architektonischen Szenen, in denen Wände, Böden und Objekte die Sicht natürlich versperren.
Nehmen wir an, Sie entwickeln eine Anwendung für ein Haus mit mehreren Räumen. Wenn sich der Nutzer im Wohnzimmer befindet, warum sollten dann GPU-Zyklen für die Darstellung der detaillierten Küche verschwendet werden, die sich hinter einer Wand befindet? Beim GPU-Occlusion Culling wird das Rendern dieser verborgenen Objekte automatisch übersprungen. So steht mehr Leistungsbudget für das zur Verfügung, was tatsächlich sichtbar ist.
Leistung im Blick behalten
Es reicht nicht aus, diese Funktionen nur zu verwenden. Sie müssen Ihre Optimierungen auch messen, um ihre Auswirkungen zu quantifizieren und zu überprüfen, ob Ihre Änderungen tatsächlich funktionieren.
Performance Metrics API
Die Performance Metrics API bietet Echtzeitüberwachung der Speichernutzung, CPU-Leistung und GPU-Leistung Ihrer Apps. Sie erhalten umfassende Daten aus den Compositor- und Laufzeitschichten, sodass Sie genau sehen können, was in Ihrer Anwendung passiert.
Legen Sie vor den Änderungen eine Baseline fest, wenden Sie eine Optimierung an, messen Sie die Auswirkungen und wiederholen Sie den Vorgang. Bei diesem datengestützten Ansatz wissen Sie, dass Sie die Leistung tatsächlich verbessern, anstatt nur Vermutungen anzustellen.
Vor der Aktivierung des Foveated Rendering beträgt die GPU-Frame-Zeit möglicherweise 13 ms, was über dem Budget von 11 ms liegt. Aktiviere das Foveated Rendering, führe die Messung noch einmal durch und hoffentlich sinkt der Wert auf 9 ms. Das sind 4 ms Spielraum, die Sie nutzen können, um Ihrer Szene mehr Details hinzuzufügen, die visuelle Qualität an anderer Stelle zu verbessern oder einfach für eine flüssigere Leistung bei einer größeren Bandbreite von Inhalten zu sorgen.
Ohne diese Messwerte optimieren Sie im Blindflug. Die Performance Metrics API liefert Ihnen die Wahrheit darüber, was für Ihren spezifischen Anwendungsfall wirklich hilfreich ist.
Frame Debugger
Der Frame Debugger ist das integrierte Tool von Unity, mit dem Sie genau nachvollziehen können, wie Ihre Szene Frame für Frame gerendert wird. Sie sehen die Reihenfolge der Draw-Aufrufe und können sie durchgehen, um zu prüfen, ob Ihre Optimierungen richtig funktionieren.
Möchten Sie bestätigen, dass der SRP Batcher funktioniert? Suchen Sie im Frame Debugger nach Einträgen vom Typ „RenderLoopNewBatcher“. Prüfen, ob der GPU-resident Drawer richtig gebatcht wird Suchen Sie nach Einträgen vom Typ „Hybrid Batch Group“. Anhand dieser visuellen Bestätigungen können Sie nachvollziehen, ob Ihre Optimierungseinstellungen tatsächlich wirksam werden.
Gehen Sie die ersten 50 Draw Calls Ihrer Szene durch. Wenn ähnliche Objekte einzeln statt in Batches gezeichnet werden, bedeutet das, dass das Instancing oder Batching nicht richtig funktioniert. Mit dem Frame Debugger werden diese Probleme sofort sichtbar, sodass Sie sie beheben können.
Zusätzliche Optimierungen
Neben den oben beschriebenen Optimierungen enthält unser vollständiger Leistungsleitfaden auch einige weitere Optimierungen. Hier eine kurze Zusammenfassung:
- URP-Einstellungen:Deaktivieren Sie HDR und die Nachbearbeitung für Mobile XR. Diese Funktionen haben im Vergleich zu ihren Leistungskosten auf mobiler Hardware nur minimale Auswirkungen auf die Grafik. Sie erzielen also messbare Leistungssteigerungen bei kaum wahrnehmbaren visuellen Unterschieden.
- SRP Batcher:Reduziert den CPU-Overhead für Szenen mit vielen Materialien, die dieselbe Shader-Variante verwenden. Wenn Sie die Änderungen des Renderstatus zwischen den Zeichenaufrufen minimieren, können Sie die für das Rendern benötigte CPU-Zeit erheblich reduzieren.
- Aktualisierungsrate des Displays:Die Aktualisierungsrate wird dynamisch zwischen 72 fps und 90 fps angepasst, je nach Komplexität der Szene. Senke die Bildrate bei komplexen Sequenzen, um die Stabilität zu gewährleisten, und erhöhe sie bei einfacheren Momenten für eine besonders flüssige Interaktion.
- Tiefen-/opake Texturen:Deaktivieren Sie diese, sofern sie nicht speziell für Shader-Effekte benötigt werden. Sie verursachen unnötige GPU-Kopiervorgänge, die Leistung verschwenden, ohne für die meisten Anwendungen einen Vorteil zu bieten.
- URP-Renderskala : Mit dieser Einstellung können Sie die Auflösung für das Rendern reduzieren, um die Leistung zu verbessern, oder die Auflösung für das Rendern erhöhen, um die Bildqualität zu verbessern.
Eine detaillierte Anleitung für diese und weitere Optimierungen finden Sie in unserem vollständigen Unity Performance Guide für Android XR.
Fazit
Die Leistung Ihrer XR-App ist nicht nur ein technisches Kontrollkästchen. Das ist der Unterschied zwischen einem angenehmen, ansprechenden Erlebnis und einem, bei dem sich Nutzer unwohl oder schlecht fühlen. Die Optimierungen, die wir besprochen haben, sind Ihr Toolkit, um die kritischen Framerate-Ziele auf den neuesten XR-Geräten zu erreichen.
So geht es weiter:
- Beginnen Sie mit Foveated Rendering und Vulkan-Subsampling. Diese XR-spezifischen Funktionen führen zu sofortigen und spürbaren GPU-Einsparungen.
- Fügen Sie „GPU Resident Drawer“ und „Occlusion Culling“ hinzu, wenn Sie komplexe Szenen mit wiederholter Geometrie oder Innenräumen haben.
- Mit der Performance Metrics API alles im Blick behalten, um sicherzugehen, dass die Änderungen tatsächlich helfen
- Zusätzliche URP-Optimierungen für mehr Leistungsspielraum
Es ist wichtig, kontinuierlich zu messen und zu iterieren. Nicht jede Optimierung kommt jedem Projekt gleichermaßen zugute. Verwenden Sie daher die Performance Metrics API, um sich ein klares Bild davon zu machen, was für Ihren spezifischen Anwendungsfall tatsächlich hilfreich ist.
Nächste Schritte: Fähigkeiten ausbauen
Möchtest du noch mehr erfahren? Hier findest du weitere Informationen:
- Unity-Leistungsleitfaden für Android XR: Detaillierte 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 Anleitungen für alle Android XR-Funktionen
Weiterlesen
-
Produktneuheiten
Die KI-Workflows und ‑Anforderungen jedes Entwicklers sind einzigartig. Daher ist es wichtig, dass Sie selbst entscheiden können, wie KI Sie bei der Entwicklung unterstützen soll. Im Januar haben wir die Möglichkeit eingeführt, ein beliebiges lokales oder Remote-KI-Modell für KI-Funktionen in Android Studio auszuwählen.
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 können Ihre KI-basierten Workflows noch besser anpassen. So wird es noch einfacher, hochwertige Android-Apps zu 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 offenen Modells anzukündigen: 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.