iOS ускорение звука

Кто-нибудь успешно использует шейдеры OpenGLES2.0 (GLSL) для синтеза звука?

Я уже использую vDSP для ускорения звука в своем приложении для iOS, которое предоставляет простой набор векторных инструкций из C-кода. Основная проблема с vDSP заключается в том, что вы должны написать, что означает векторно-ориентированный ассемблер, потому что основной цикл для каждого семпла проталкивается вниз в каждую примитивную операцию (добавление вектора, умножение вектора). Компиляция выражений в эти последовательности - суть того, что шейдерные языки автоматизируют для вас. OpenCL не является общедоступным в iOS. Также интересно, что GLSL компилируется во время выполнения, а это означает, что если большая часть звукового движка может быть в GLSL, то пользователи могут вносить нетривиальные вклады в патчи.

1 ответ

Решение

Хотя шейдеры iOS GPU могут быть относительно "быстрыми", пути загрузки и восстановления данных (текстур, обработанных пикселей и т. Д.) Из GPU достаточно медленные, чтобы более чем компенсировать любую текущую вычислительную эффективность шейдеров при использовании GLSL.

Для синтеза в реальном времени задержки на пути разгрузки пикселя графического процессора намного больше, чем наилучшая возможная задержка звукового отклика, используя только синтез ЦП для подачи данных на RemoteIO. например, частота кадров дисплея (к которой заблокирован конвейер графического процессора) медленнее, чем оптимальные скорости обратного вызова RemoteIO. В этих коротких аудио-буферах просто недостаточно параллелизма.

Другие вопросы по тегам