IOS: производительность шейдеров с динамическим ветвлением в OpenGL ES 2.0 и 3.0

У меня есть приложение IOS на базе OpenGL ES 3.0, которое я собираюсь портировать на ES 2.0. Он содержит шейдеры с несколькими дорогостоящими, как мне кажется, циклами и операторами if. Хотя приложение нормально работает на устройстве с OpenGL ES 3.0, я не уверен, что оно будет хорошо работать на устройствах с ES 2.0 (которых у меня нет). Поэтому я хотел бы знать, насколько хорошо старые устройства IOS обрабатывают конструкции динамического ветвления по сравнению с более новыми? Кто-нибудь видел некоторые связанные тесты?


person tonso    schedule 03.07.2015    source источник


Ответы (1)


Это не совсем вопрос GLES2 или GLES3, поскольку вы можете использовать GLES2.0 (или даже GLES1.0) на устройстве GLES3.0.

Это больше касается мощности обработки фрагментов графическим процессором, количества фрагментов, которое вам потребуется для обработки каждого кадра, стоимости цикла вашего шейдера (которую вы можете оценить с помощью инструмента PVRShaderEditor, который вы можете найти на веб-сайте Imagination Technologies) и как вы читаете текстуры в шейдере.

Менее мощным устройством, совместимым с ES3.0, является iPhone 5S.

Так что, если у вас в настоящее время есть постоянные 60 кадров в секунду на 5S, то я бы не сильно беспокоился о таких устройствах, как iPhone5 и 4S, вы, вероятно, получите от 20 до 30 кадров в секунду или больше. На iPad2/3 вам, возможно, придется использовать уменьшенное разрешение, потому что у них большие экраны, а GPU может не следовать. Теперь для iPhone4 это другая история... это устройство работает очень медленно, когда пытается делать сложные вещи в шейдерах (более ~20 циклов убивает производительность...) и/или если вы часто используете прозрачность (например: полноэкранный прозрачный четырехугольник(и), отображаемый поверх других элементов), или если вы используете цели рендеринга для постобработки.

Если у вас 25/30 кадров в секунду на iPhone5S, то я думаю, что вы не можете надеяться, что приложение будет работать должным образом на менее мощных устройствах, если вы не найдете способ уменьшить количество циклов, используемых вашими шейдерами (упрощение этих / вырезание эффектов и т. д.)

person VB_overflow    schedule 06.07.2015