Samsung Galaxy XR è arrivato, con tecnologia Android XR! Questo post del blog fa parte della settimana di approfondimento su Android XR, in cui forniamo risorse (post del blog, video, codice di esempio e altro ancora) progettate per aiutarti a imparare, creare e preparare le tue app per Android XR.
Questa settimana, Samsung ha lanciato Galaxy XR, sviluppato in collaborazione con Google e Qualcomm. È un momento entusiasmante per gli sviluppatori e volevamo aiutarti a ottenere il miglior rendimento possibile dalla tua app XR.
Se il rendimento di giochi e app su dispositivi non XR è scarso, può essere frustrante per l'utente, ma nel mondo di XR il rendimento non è solo facoltativo, è fondamentale per il successo della tua app. Se non raggiungi la frequenza fotogrammi target in XR, possono verificarsi problemi molto più gravi, come la chinetosi.
In questa guida, ti illustreremo le ottimizzazioni del rendimento essenziali che devi comprendere per lo sviluppo di Android XR. Scoprirai quali funzionalità offrono i maggiori miglioramenti del rendimento, quando utilizzarle e come funzionano insieme per aiutarti a raggiungere le frequenze fotogrammi target.
Ecco a cosa puntiamo:
- Minimo: 72 fps (fa parte delle nostre norme sulla qualità di riproduzione)
- Facoltativo: 90 fps con un budget di 11 ms per frame
Per saperne di più sul motivo per cui è importante mantenere una frequenza fotogrammi così elevata, consulta le nostre linee guida sul rendimento.
Funzionalità di rendimento specifiche per XR
Inizieremo trattando due funzionalità di rendimento specifiche per XR: il rendering foveale e il sottocampionamento Vulkan.
Rendering foveale
Il rendering foveale è 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 si guarda più lontano.
La seconda è la modalità di rilevamento dello sguardo che esegue il rendering specifico dell'area in cui stai guardando in modo dettagliato, riducendo al contempo la qualità visualizzata nelle periferiche. In sostanza, imita il funzionamento della visione umana, in cui vediamo solo dettagli precisi nell'area specifica su cui ci stiamo concentrando.
Il rendering foveale riduce significativamente il carico di lavoro della GPU senza sacrificare la qualità dell'immagine percepita dall'utente. Il bello del rendering foveale è che gli utenti non noteranno la qualità ridotta nella loro visione periferica, ma la GPU noterà sicuramente il miglioramento del rendimento.
Immagina di creare un'esperienza museale con manufatti 3D complessi. Senza il rendering foveale, avresti difficoltà a mantenere 90 fps cercando di eseguire il rendering di tutto nel "campo visivo". Con il rendering foveale, puoi mantenere i dettagli ad alta poligonale dove l'utente sta guardando, ma l'ambiente di sfondo viene eseguito con una qualità inferiore. Gli utenti non noteranno la differenza, ma avrai la possibilità di aggiungere più dettagli alla scena.
Sottocampionamento Vulkan
Il sottocampionamento Vulkan è il miglior amico del rendering foveale. Mentre il rendering foveale decide di eseguire il rendering a diversi livelli di qualità, il sottocampionamento Vulkan gestisce come eseguire in modo efficiente il rendering dei diversi livelli di qualità utilizzando le mappe di densità dei frammenti.
Se combinato con il rendering foveale, il sottocampionamento Vulkan ti offre 0,5 ms di rendimento in più. Aiuta anche 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 comandi, la combinazione del rendering foveale con il sottocampionamento Vulkan significa che i controlli dettagliati vengono eseguiti con nitidezza, ma la struttura della cabina di pilotaggio periferica 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à GPU per scene complesse
Oltre al rendering foveale e al sottocampionamento Vulkan, esistono alcune funzionalità GPU che riducono il carico non necessario tramite l'istanza e l'eliminazione intelligenti. Queste 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 il tempo di elaborazione della CPU. Quindi, anziché la CPU che comunica alla GPU ogni oggetto singolarmente, la GPU raggruppa gli oggetti simili.
Questa funzionalità è più efficace per scene di grandi dimensioni con mesh ripetute, come alberi in una foresta, mobili in un edificio di uffici o oggetti di scena sparsi in un ambiente.
Immagina una scena di una foresta con 200 alberi che utilizzano la stessa mesh di base. Senza GPU Resident Drawer, hai 200 chiamate di disegno che consumano la GPU, liberando quindi la CPU. Quando attivi questa funzionalità, la GPU creerà istanze in modo intelligente di questi alberi, riducendoli a sole 5-10 chiamate di disegno. Si tratta di un risparmio enorme della GPU che puoi investire nella logica di gioco o nei 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 potente negli spazi interni con più stanze, ambienti densi o scene architettoniche in cui pareti, pavimenti e oggetti bloccano naturalmente la visualizzazione.
Ad esempio, supponiamo che tu stia creando un'esperienza di casa con più stanze. Quando l'utente si trova nel soggiorno, perché sprecare cicli GPU per eseguire il rendering della cucina completamente dettagliata che è completamente nascosta dietro una parete? GPU Occlusion Culling salta automaticamente il rendering di questi 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, in modo da quantificarne l'impatto e verificare che le modifiche funzionino effettivamente.
API Performance Metrics
L'API Performance Metrics fornisce il monitoraggio in tempo reale della memoria utilizzata, del rendimento della CPU e del rendimento della GPU delle tue app. Fornisce dati completi dai livelli di compositore e runtime, in modo da poter vedere esattamente cosa sta succedendo nella tua applicazione.
Stabilisci una baseline prima di apportare le modifiche, applica un'ottimizzazione, misura l'impatto ed esegui l'iterazione. Questo approccio basato sui dati significa che sai che stai effettivamente migliorando il rendimento anziché indovinare.
Prima di attivare il rendering foveale, la durata frame della GPU potrebbe essere di 13 ms, ovvero superiore al budget di 11 ms. Attiva il rendering foveale, misura di nuovo e, si spera, vedrai che scende a 9 ms. Hai guadagnato 4 ms di margine per aggiungere più dettagli alla scena, migliorare la qualità visiva altrove o semplicemente garantire un rendimento più fluido su una gamma più ampia di contenuti.
Senza queste metriche, stai ottimizzando alla cieca. L'API Metrics ti dice la verità su ciò che aiuta effettivamente il tuo caso d'uso specifico.
Frame Debugger
Il Frame Debugger è lo strumento integrato di Unity per comprendere esattamente come viene eseguito il rendering della scena, frame per frame. Mostra la sequenza delle chiamate di disegno e ti consente di esaminarle per verificare che le ottimizzazioni funzionino correttamente.
Vuoi verificare che SRP Batcher funzioni? Cerca le voci "RenderLoopNewBatcher" in Frame Debugger. Verifica se GPU Resident Drawer esegue correttamente il batch? Cerca le voci "Hybrid Batch Group". Queste conferme visive ti aiutano a capire se le impostazioni di ottimizzazione hanno effettivamente effetto.
Esamina le prime 50 chiamate di disegno della scena. Se vedi oggetti simili disegnati singolarmente anziché in batch, significa che l'istanza o il batch non funzionano correttamente. Frame Debugger rende questi problemi immediatamente visibili in modo che tu possa risolverli.
Altre ottimizzazioni
Oltre alle ottimizzazioni che abbiamo trattato sopra, la nostra guida completa al rendimento tratta anche altre ottimizzazioni aggiuntive. Ecco un breve riepilogo:
- Impostazioni URP: disattiva HDR e post-elaborazione per XR mobile. Queste funzionalità forniscono un impatto visivo minimo rispetto al costo del rendimento sull'hardware mobile, quindi otterrai miglioramenti misurabili del rendimento 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: regola dinamicamente tra 72 fps e 90 fps in base alla complessità della scena. Riduci la frequenza fotogrammi durante le sequenze complesse per mantenere la stabilità, quindi aumentala durante i momenti più semplici per un'interazione ultra-fluida.
- Texture di profondità/opache: disattiva queste opzioni a meno che non siano specificamente necessarie per gli effetti shader. Causano operazioni di copia GPU non necessarie che sprecano il rendimento senza fornire vantaggi per la maggior parte delle applicazioni.
- Scala di rendering URP: questa impostazione consente di eseguire il rendering a una risoluzione ridotta per migliorare il rendimento o di eseguire l'upscaling del rendering per una qualità visiva migliorata.
Per istruzioni passo passo su queste e altre ottimizzazioni, consulta la nostra guida completa al rendimento di Unity per Android XR.
Conclusione
Il rendimento della tua app XR non è solo una casella di controllo tecnica. Fa la differenza tra un'esperienza comoda e coinvolgente e una che fa sentire gli utenti malati o a disagio. Le ottimizzazioni che abbiamo trattato sono il tuo toolkit per raggiungere le frequenze fotogrammi critiche sui più recenti dispositivi XR.
Ecco la tua roadmap:
- Inizia con il rendering foveale e il sottocampionamento Vulkan. Queste funzionalità specifiche per XR offrono risparmi immediati e notevoli 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 altre ottimizzazioni URP per un margine di rendimento aggiuntivo
È fondamentale misurare continuamente e ripetere. Non tutte le ottimizzazioni avranno lo stesso vantaggio per ogni progetto, quindi utilizza l'API Metrics sulle prestazioni per avere un'idea chiara di ciò che aiuta effettivamente il tuo caso d'uso specifico.
Passaggi successivi: espandere le tue competenze
Vuoi saperne di più? Dai un'occhiata a queste risorse:
- Guida al rendimento di Unity per Android XR : istruzioni passo passo complete per l'implementazione di tutte le funzionalità trattate qui.
- Guida introduttiva a Unity e Android XR : configura l'ambiente di sviluppo e inizia a creare.
- Documentazione per gli sviluppatori di Android XR : guide complete per tutte le funzionalità di Android XR
Continua a leggere
-
Notizie sui prodotti
Il flusso di lavoro e le esigenze di AI di ogni sviluppatore sono unici ed è importante poter scegliere in che modo l'AI aiuta lo sviluppo. A gennaio abbiamo introdotto la possibilità di scegliere qualsiasi modello di AI locale o remoto per alimentare la funzionalità AI in Android Studio
Matthew Warner • Lettura di 2 minuti
-
Notizie sui prodotti
Android Studio Panda 3 è ora stabile e pronto per l'uso in produzione. Questa release offre ancora più controllo e personalizzazione sui flussi di lavoro basati sull'AI, rendendo più facile che mai la creazione di app Android di alta qualità.
Matt Dyor • Lettura di 3 minuti
-
Notizie sui prodotti
In Google, ci impegniamo a portare i modelli AI più potenti direttamente sui dispositivi Android in tasca. Oggi siamo felici di annunciare il rilascio del nostro ultimo modello open all'avanguardia: Gemma 4.
Caren Chang, David Chou • Lettura di 3 minuti
Segui gli aggiornamenti
Ricevi settimanalmente nella tua casella di posta le ultime informazioni sullo sviluppo di Android.