Улучшает ли использование простых шейдеров производительность / время автономной работы?

8

Я делаю игру OpenGL для Android. До сих пор я использовал только фиксированный конвейер функций, но я рендерил простые вещи.

Фиксированный конвейер функций включает в себя множество вещей, которые мне не нужны Поэтому я думаю о реализации шейдеров в моей игре, чтобы упростить конвейер OpenGL, если он может повысить производительность.

Лучшая производительность = лучшее время автономной работы, если fps не ограничен программным пределом, а не аппаратной мощностью.

kravemir
источник
Не устарел ли конвейер с фиксированной функцией? Может быть проблема в ближайшем будущем.
3Dave

Ответы:

4

На самом деле здесь нет вопроса, за исключением темы, но повышение производительности и времени автономной работы могут быть совершенно разными вещами. Кроме того, улучшилось по сравнению с чем? По сравнению с фиксированной функцией конвейера? По сравнению со сложными шейдерами?

Простые шейдеры должны давать более высокую частоту кадров (при условии, что ваша частота кадров ограничена пропускной способностью графического процессора, а не частотой обновления экрана) по сравнению со сложными шейдерами, что может показаться более высокой производительностью. Это не обязательно увеличит время автономной работы, хотя вы все равно могли бы использовать 100% -ную мощность графического процессора / процессора, но вы будете иметь более высокую частоту кадров, потому что меньше каждого кадра.

По сравнению с фиксированной функцией конвейера ... кто знает? В настоящее время многие производители оборудования реализуют конвейер фиксированных функций в терминах шейдеров, поэтому вы просто снова сравниваете простые и сложные шейдеры.

BpHinch
источник
1

У меня нет современных данных о потреблении энергии смартфоном, но я думаю, что CPU и GPU должны быть где-то на одном уровне. Поправь меня, если я ошибаюсь.

Как правило, попытка оптимизировать части вашего кода, которые зависят от производительности, - это всегда хорошо, не только потому, что вы экономите время работы от батареи, но и потому, что вы можете использовать устройства с менее мощным оборудованием. Я также всегда призываю людей использовать OpenGL ES 2.0 / OpenGL 3.0 для игр, потому что, как вы сказали, мощь шейдеров сводит усилия к минимуму и обеспечивает гораздо большую гибкость.

Но, исходя из предположения, что вы визуализируете некоторые 2D-спрайты, я бы сказал, что графический процессор в основном находится в состоянии ожидания. Это означает, что процессор может оказать большее влияние на время автономной работы, чем графический процессор, поэтому здесь не следует ожидать слишком положительных результатов. Я бы порекомендовал вам попробовать улучшить ваши алгоритмы, работающие на ЦП, прежде чем оптимизировать алгоритмы на GPU, но я бы также использовал шейдеры для большей гибкости. По крайней мере, если вы можете игнорировать устройства без поддержки OpenGL ES 2.0 (опять же, у меня нет цифр ^^).

Marco
источник
Спасибо за хороший ответ, но я не спрашивал: «Какую часть игры следует оптимизировать для лучшего использования батареи». ;)
Кравемир