Samsung Galaxy XR è arrivato, con Android XR. Questo post del blog fa parte della nostra settimana di Android XR Spotlight, in cui forniamo risorse (post del blog, video, codice campione e altro ancora) progettate per aiutarti a imparare, creare e preparare le tue app per Android XR.
Questa settimana, Samsung ha lanciato Galaxy XR, creato in collaborazione con Google e Qualcomm. Questo è un momento entusiasmante per gli sviluppatori e vogliamo aiutarvi a ottenere il massimo rendimento dalla vostra app XR.
Anche se le scarse prestazioni di giochi e app su dispositivi non XR possono essere frustranti per l'utente, nel mondo dell'XR le prestazioni non sono solo facoltative, ma fondamentali per il successo della tua app. Se non raggiungi la frequenza fotogrammi target in XR, possono verificarsi problemi molto più gravi, come il mal di movimento.
In questa guida, ti illustreremo le ottimizzazioni delle prestazioni essenziali che devi comprendere per lo sviluppo di Android XR. Scoprirai quali funzionalità offrono i maggiori miglioramenti delle prestazioni, quando utilizzarle e come funzionano insieme per aiutarti a raggiungere i target di frequenza fotogrammi.
Ecco cosa vogliamo ottenere:
- Minimo: 72 fps (parte delle nostre norme sulla qualità di riproduzione)
- (Facoltativo) 90 fps con un budget di 11 ms per fotogramma
Per saperne di più sul motivo per cui è importante mantenere un frame rate così elevato, consulta le nostre linee guida sul rendimento.
Funzionalità di rendimento specifiche per XR
Inizieremo esaminando due funzionalità di rendimento specifiche per la realtà estesa: il rendering foveato e il sottocampionamento Vulkan.
Rendering foveato
Il rendering foveato è un'ottimizzazione che ha due modalità. La prima è una modalità statica che esegue il rendering del centro dello schermo a una risoluzione più elevata e riduce progressivamente la risoluzione man mano che ti allontani.
La seconda è la modalità di tracciamento oculare, che esegue il rendering in dettaglio dell'area in cui stai guardando, riducendo al contempo la qualità visualizzata nella periferia. Imita essenzialmente il funzionamento della visione umana, in cui vediamo i dettagli più fini solo nell'area specifica su cui ci concentriamo.
Il rendering foveato riduce significativamente il carico di lavoro della GPU senza sacrificare la qualità dell'immagine percepita dall'utente. Il rendering foveato è un'ottima soluzione perché gli utenti non noteranno la qualità ridotta nella visione periferica, ma la GPU noterà sicuramente il miglioramento delle prestazioni.
Immagina di creare un'esperienza museale con artefatti 3D complessi. Senza il rendering foveato, avresti difficoltà a mantenere 90 fps cercando di eseguire il rendering di tutto il "campo visivo". Con il rendering foveato, puoi mantenere i dettagli ad alta risoluzione dove l'utente sta guardando, ma l'ambiente di sfondo viene renderizzato a una qualità inferiore. I tuoi utenti non noteranno la differenza, ma avrai spazio per aggiungere più dettagli alla scena.
Sottocampionamento Vulkan
Il sottocampionamento Vulkan è il migliore amico del rendering foveato. Il rendering foveato decide cosa eseguire il rendering a diversi livelli di qualità, mentre il sottocampionamento Vulkan gestisce come eseguire il rendering in modo efficiente dei diversi livelli di qualità utilizzando le mappe di densità dei frammenti.
Se combinato con il rendering foveato, il sottocampionamento Vulkan ti offre 0,5 ms di prestazioni in più. Inoltre, aiuta a smussare i bordi frastagliati nella visione periferica, rendendo l'immagine complessiva più nitida.
Ad esempio, in un gioco di simulazione di volo in cui gli utenti si concentrano su strumenti e controlli, la combinazione del rendering foveato con il sottocampionamento Vulkan fa sì che i controlli dettagliati vengano renderizzati in modo nitido, ma la struttura periferica della cabina di pilotaggio utilizza meno risorse. Questi 0,5 ms in più non sembrano molti, ma fanno la differenza tra avere spazio per un elemento interattivo aggiuntivo o perdere frame durante i momenti intensi.
Funzionalità della GPU per scene complesse
Oltre al rendering foveato e al sottocampionamento Vulkan, esistono alcune funzionalità della GPU che riducono lo sforzo non necessario tramite l'istanziamento e l'eliminazione intelligenti. Questi sono particolarmente efficaci per scene complesse con geometria ripetuta o occlusione significativa.
GPU Resident Drawer
Il GPU Resident Drawer utilizza automaticamente l'istanza GPU per ridurre le chiamate di disegno e liberare tempo di elaborazione della CPU. In questo modo, anziché comunicare alla GPU ogni oggetto singolarmente, la CPU raggruppa gli oggetti simili.
Questa funzionalità è più efficace per le scene di grandi dimensioni con mesh ripetuti, come gli alberi in una foresta, i mobili in un edificio per uffici o gli oggetti sparsi in un ambiente.
Immagina una scena di foresta con 200 alberi che utilizzano la stessa mesh di base. Senza il riquadro a scomparsa residente della GPU, hai 200 chiamate di disegno che consumano la GPU, liberando così la CPU. Quando attivi questa funzionalità, la GPU istanzia in modo intelligente questi alberi, riducendoli a sole 5-10 chiamate di disegno. Si tratta di un enorme risparmio di GPU che puoi investire in logica di gioco o calcoli fisici.
GPU Occlusion Culling
GPU Occlusion Culling utilizza la GPU anziché la CPU per identificare e saltare il rendering degli oggetti nascosti. Rileva automaticamente ciò che è occluso (nascosto) dietro altri oggetti, in modo da non sprecare la GPU per elementi che l'utente non può vedere.
Questa funzionalità è particolarmente efficace negli spazi interni con più stanze, in ambienti densi o in scene architettoniche in cui pareti, pavimenti e oggetti bloccano naturalmente la visuale.
Ad esempio, supponiamo che tu stia creando un'esperienza per una casa con più stanze. Quando l'utente si trova in soggiorno, perché sprecare cicli della GPU per il rendering della cucina completamente dettagliata che è completamente nascosta dietro una parete? GPU Occlusion Culling salta automaticamente il rendering degli oggetti nascosti, offrendoti un budget delle prestazioni maggiore per ciò che è effettivamente visibile.
Monitorare il rendimento
Non è sufficiente utilizzare queste funzionalità. Devi anche misurare le ottimizzazioni per quantificare il loro impatto e verificare che le modifiche funzionino effettivamente.
API Performance Metrics
L'API Performance Metrics fornisce il monitoraggio in tempo reale della memoria utilizzata, delle prestazioni della CPU e delle prestazioni della GPU delle tue app. Fornisce dati completi dai livelli di composizione e runtime, in modo da poter vedere esattamente cosa succede nella tua applicazione.
Stabilisci una base di riferimento prima di apportare le modifiche, applica un'ottimizzazione, misura l'impatto e ripeti l'operazione. Questo approccio basato sui dati ti consente di sapere che stai effettivamente migliorando il rendimento, anziché fare ipotesi.
Prima di attivare il rendering foveato, la durata frame della GPU potrebbe essere di 13 ms, ovvero superiore al budget di 11 ms. Attiva il rendering foveato, esegui di nuovo la misurazione e, si spera, vedrai il valore scendere a 9 ms. In questo modo, hai guadagnato 4 ms di margine per aggiungere più dettagli alla scena, migliorare la qualità visiva altrove o semplicemente garantire prestazioni più fluide in una gamma più ampia di contenuti.
Senza queste metriche, l'ottimizzazione è cieca. L'API Metrics ti dice la verità su ciò che aiuta effettivamente il tuo caso d'uso specifico.
Frame Debugger
Frame Debugger è lo strumento integrato di Unity per capire esattamente come viene eseguito il rendering della scena, frame per frame. Mostra la sequenza delle chiamate di disegno e ti consente di esaminarle passo passo per verificare che le ottimizzazioni funzionino correttamente.
Vuoi verificare che SRP Batcher funzioni? Cerca le voci "RenderLoopNewBatcher" in Frame Debugger. Verificare se il riquadro residente della GPU esegue il batching correttamente. Cerca le voci "Hybrid Batch Group". Queste conferme visive ti aiutano a capire se le impostazioni di ottimizzazione sono effettivamente efficaci.
Scorri le prime 50 chiamate di disegno della scena. Se vedi oggetti simili disegnati singolarmente anziché in batch, significa che l'istanziamento o il batch non funzionano correttamente. Il debugger dei frame rende questi problemi immediatamente visibili in modo che tu possa risolverli.
Ottimizzazioni aggiuntive
Oltre alle ottimizzazioni che abbiamo trattato in precedenza, la nostra guida completa al rendimento include anche alcune ottimizzazioni aggiuntive. Ecco un breve riepilogo:
- Impostazioni URP: disattiva HDR e post-elaborazione per XR mobile. Queste funzionalità hanno un impatto visivo minimo rispetto al costo delle prestazioni sull'hardware mobile, quindi otterrai miglioramenti misurabili delle prestazioni con differenze visive appena percettibili.
- SRP Batcher:riduce il sovraccarico della CPU per le scene con molti materiali che utilizzano la stessa variante di shader. Riducendo al minimo le modifiche dello stato di rendering tra le chiamate di disegno, puoi ridurre significativamente il tempo della CPU dedicato al rendering.
- Frequenza di aggiornamento del display:si regola dinamicamente tra 72 e 90 fps in base alla complessità della scena. Riduce la frequenza fotogrammi durante le sequenze complesse per mantenere la stabilità, quindi la aumenta durante i momenti più semplici per un'interazione ultrafluida.
- Texture di profondità/opache:disattiva queste opzioni, a meno che non siano necessarie per gli effetti shader. Provocano operazioni di copia della GPU non necessarie che sprecano prestazioni senza fornire vantaggi per la maggior parte delle applicazioni.
- Scala di rendering URP : questa impostazione ti consente di eseguire il rendering a una risoluzione ridotta per migliorare le prestazioni o di aumentare la risoluzione del rendering per una migliore qualità visiva.
Per istruzioni passo passo su queste e altre ottimizzazioni, consulta la nostra guida completa alle prestazioni di Unity per Android XR.
Conclusione
Le prestazioni della tua app XR non sono solo una casella di controllo tecnica. È la differenza tra un'esperienza confortevole e coinvolgente e una che fa sentire gli utenti a disagio o male. Le ottimizzazioni che abbiamo trattato sono il tuo kit di strumenti per raggiungere i target di framerate critici sui dispositivi XR più recenti.
Ecco la tua roadmap:
- Inizia con il rendering foveato e il sottocampionamento Vulkan. Queste funzionalità specifiche per la realtà aumentata e la realtà virtuale offrono un risparmio immediato e notevole della GPU.
- Aggiungi GPU Resident Drawer e Occlusion Culling se hai scene complesse con geometria ripetuta o spazi interni.
- Monitora tutto con l'API Metrics per assicurarti che le modifiche siano effettivamente utili
- Esplora ulteriori ottimizzazioni URP per un margine di miglioramento del rendimento aggiuntivo
È fondamentale misurare continuamente e apportare modifiche. Non tutte le ottimizzazioni avvantaggiano ogni progetto allo stesso modo, quindi utilizza l'API Metrics per avere un'idea chiara di ciò che aiuta effettivamente il tuo caso d'uso specifico.
Passaggi successivi: ampliare le tue competenze
Vuoi saperne di più? Dai un'occhiata a queste risorse:
- Guida al rendimento di Unity per Android XR: istruzioni dettagliate per l'implementazione di tutte le funzionalità trattate qui.
- Inizia a utilizzare Unity e Android XR: configura l'ambiente di sviluppo e inizia a creare.
- Documentazione per sviluppatori di Android XR: guide complete per tutte le funzionalità di Android XR
Continua a leggere
-
Novità sul prodotto
Android Studio supporta Gemma 4: il nostro modello locale più potente per la programmazione agentica
Il flusso di lavoro e le esigenze di ogni sviluppatore in materia di AI sono unici ed è importante poter scegliere in che modo l'AI può aiutarti nello sviluppo. A gennaio abbiamo introdotto la possibilità di scegliere qualsiasi modello di AI locale o remoto per potenziare la funzionalità di AI in Android Studio
Matthew Warner • Lettura di 2 minuti
-
Novità sul prodotto
Android Studio Panda 3 è ora stabile e pronto per l'uso in produzione. Questa release ti offre ancora più controllo e personalizzazione sui tuoi flussi di lavoro basati sull'AI, rendendo più facile che mai creare app per Android di alta qualità.
Matt Dyor • Lettura di 3 minuti
-
Novità sul prodotto
In Google ci impegniamo a portare i modelli di AI più potenti direttamente sui dispositivi Android che hai in tasca. Oggi siamo felici di annunciare il rilascio del nostro modello open all'avanguardia più recente: Gemma 4.
Caren Chang, David Chou • Lettura di 3 minuti
Segui gli aggiornamenti
Ricevi ogni settimana gli ultimi approfondimenti sullo sviluppo per Android direttamente nella tua casella di posta.