L'uso di shader semplici migliora la durata delle prestazioni / della batteria?


8

Sto realizzando un gioco OpenGL per Android. Fino ad ora ho usato solo una pipeline a funzione fissa, ma sto eseguendo il rendering di cose semplici.

La pipeline a funzioni fisse include molte cose che non mi servono. Quindi sto pensando di implementare shader nel mio gioco per semplificare la pipeline OpenGL se può migliorare le prestazioni.

Migliori prestazioni = migliore durata della batteria, a meno che fps non sia limitato dal limite del software, non dalla potenza dell'hardware.


La pipeline a funzione fissa non è deprecata? Potrebbe essere un problema nel prossimo futuro.
3Daveva il

Risposte:


4

In realtà non c'è una domanda qui se non nell'argomento, ma il miglioramento delle prestazioni e la durata della batteria potrebbero essere cose completamente diverse. Inoltre, migliorato rispetto a cosa? Rispetto alla pipeline a funzione fissa? Rispetto agli shader complessi?

Gli shader semplici dovrebbero fornire un framerate più elevato (supponendo che il framerate sia limitato dal throughput della gpu piuttosto che dalla frequenza di aggiornamento dello schermo) rispetto agli shader complessi, che potresti considerare prestazioni migliori. Ciò non migliorerà necessariamente la durata della batteria, ma potresti comunque utilizzare il 100% di potenza gpu / cpu, ma avrai una frequenza dei fotogrammi più alta perché c'è meno da fare per ogni fotogramma.

Rispetto alla pipeline a funzione fissa ... chi lo sa? Oggigiorno molti fornitori di hardware implementano la pipeline a funzioni fisse in termini di shader, quindi stai solo confrontando nuovamente shader semplici e complessi.


1

Non ho dati aggiornati sul consumo di energia dello smartphone, ma penso che CPU e GPU dovrebbero essere da qualche parte allo stesso livello. Correggimi, se sbaglio.

In generale, cercare di ottimizzare parti del codice che si basano sulle prestazioni è sempre una buona cosa, non solo perché risparmi la durata della batteria, ma anche perché puoi raggiungere dispositivi con hardware meno potente. Inoltre incoraggio sempre le persone a usare OpenGL ES 2.0 / OpenGL 3.0 per i giochi, perché il potere degli shader è, come hai detto tu, di ridurre al minimo lo sforzo e di fornire molta più flessibilità.

Ma, in base al presupposto che stai eseguendo il rendering di alcuni sprite 2D, direi che la GPU è principalmente in uno stato inattivo. Ciò significa che la CPU avrà probabilmente un impatto maggiore sulla durata della batteria rispetto alla GPU, quindi non dovresti aspettarti risultati troppo positivi qui. Ti consiglierei di provare a migliorare i tuoi algoritmi in esecuzione sulla CPU prima di ottimizzare quelli sulla GPU, ma utilizzerei anche gli shader per motivi di flessibilità. Almeno se puoi ignorare i dispositivi là fuori senza supporto per OpenGL ES 2.0 (di nuovo, non ho cifre ^^).


Grazie per la bella risposta, ma non ho chiesto "Quale parte del gioco dovrei ottimizzare per un migliore utilizzo della batteria". ;)
kravemir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.