#ios #gpu #metal #pixel-shader #core-video
#iOS #графический процессор #Металлические #pixel-shader #core-video
Вопрос:
Я пишу видеоэффект в iOS с использованием Metal, для которого требуются пиксельные данные текущего кадра, а также многих предыдущих кадров исходного входного видео. Существует ли общий шаблон или наилучшая практика для создания шейдеров такого типа, которые наиболее эффективно используют память и графический процессор?
Комментарии:
1. Моя текущая реализация предполагает кэширование предыдущих входных кадров в виде изображений в массиве, который ведет себя как стек. На каждом шаге вычисления создается текстура для каждого входного кадра в стеке, и эти текстуры передаются моему шейдеру в виде массива 2d текстур.
2. Вам нужно будет ограничить количество предыдущих кадров, потому что для видео потребуется всего несколько кадров, чтобы использовать всю память устройства. Также будьте очень осторожны с ссылками CIImage, вы не хотите генерировать промежуточные текстуры, которые используют 16 или 32-разрядные значения с плавающей точкой для каждого пикселя, поскольку это в 2 или 4 раза увеличит использование вашей памяти.