O uso de shaders simples melhora o desempenho / duração da bateria?

8

Estou fazendo o jogo OpenGL para Android. Até agora eu usei apenas o pipeline de função fixa, mas estou renderizando coisas simples.

O pipeline de função fixa inclui muitas coisas de que não preciso. Então, eu estou pensando em implementar shaders no meu jogo para simplificar o pipeline do OpenGL, se puder obter um melhor desempenho.

Melhor desempenho = melhor duração da bateria, a menos que o fps seja limitado pelo limite do software, não pela energia do hardware.

kravemir
fonte
O pipeline de função fixa não está obsoleto? Pode ser um problema no futuro próximo.
3Dave

Respostas:

4

Na verdade, não há uma pergunta aqui, exceto no assunto, mas o desempenho aprimorado e a vida útil da bateria podem ser coisas totalmente diferentes. Além disso, melhorou em comparação com o que? Comparado ao pipeline de função fixa? Comparado a shaders complexos?

Os shaders simples devem fornecer uma taxa de quadros mais alta (assumindo que a taxa de quadros é limitada pela taxa de transferência da GPU em vez da taxa de atualização da tela) quando comparada aos shaders complexos, que você pode considerar melhor desempenho. Isso não necessariamente melhora a vida útil da bateria, você ainda pode estar usando 100% de energia gpu / cpu, mas terá uma taxa de quadros mais alta porque há menos para fazer em cada quadro.

Comparado ao pipeline de função fixa ... quem sabe? Atualmente, muitos fornecedores de hardware implementam o pipeline de função fixa em termos de shaders, então você está apenas comparando shaders simples e complexos novamente.

BpHinch
fonte
1

Não tenho números atualizados de consumo de energia dos smartphones, mas acho que a CPU e a GPU devem estar em algum lugar do mesmo nível. Corrija-me se eu estiver enganado.

Geralmente, tentar otimizar partes do seu código que dependem do desempenho é sempre bom, não apenas porque você economiza a bateria, mas também porque pode alcançar dispositivos com hardware menos potente. Eu também sempre incentivo as pessoas a usar o OpenGL ES 2.0 / OpenGL 3.0 para jogos, porque o poder dos shaders é, como você disse, reduzir o esforço ao mínimo e fornecer muito mais flexibilidade.

Mas, com base na suposição de que você está processando alguns sprites 2D, eu diria que a GPU está principalmente no estado inativo. Isso significa que a CPU possivelmente terá mais impacto na vida útil da bateria do que a GPU, portanto você não deve esperar resultados muito positivos aqui. Eu recomendo que você tente melhorar seus algoritmos em execução na CPU antes de otimizar os da GPU, mas eu usaria shaders também por uma questão de flexibilidade. Pelo menos se você puder ignorar os dispositivos existentes sem suporte para o OpenGL ES 2.0 (novamente, não tenho números ^^).

Marco
fonte
Obrigado pela resposta agradável, mas não perguntei "O que deve fazer parte do jogo devo otimizar para melhor uso da bateria". ;)
kravemir