Как стать автором
Обновить

Комментарии 31

Желаю удачи! А увидеть скриншоты приложения можно?
В основном, скриншоты тут
Для примера, несколько экранов, снял с эмулятора :)




А то, что превьюшки фильтров всегда с теткой, а не с активной фотографией — это так в правилах написано, или это вы решили ан заворачиваться?
В правилах :)
Ведь фильтры могут применяться непосредственно во время съемки, а там каждый кадр рендерить в превьюшки, потом накладывать фильтры… ух, даже думать не хочу :)
Правила, там, вроде, были менее жёсткие.
Я, например, забил на GPUImage (он толстый, тормозной и проблемный) и написал свой процессор цепочек эффектов с известно кем и чем, который позволил, среди всего прочего, показывать маленькие превьюшки всех доступных эффектов в реальном времени на плавных 30фпс (можно было сделать и все 60, но из самой камеры изображения приходят реже и неустойчивей).
Правда, это хороший пример того, как не надо было делать за два дня до дедлайна :D — когда у меня была готова core-часть с эффектами и захватом, оставался час, и не было уже никакого смысла даже браться за весь остальной гуй и функции.
Может выложите куда-нибудь свой код для ознакомления? :)
Пока не знаю. Он (а) так себе чистый, (б) на плюсах с лёгким налётом си-стайла, (в) не шибко интересный — там много всякого сетапа и скукоты, суть тяжело добыть.

Могу, впрочем, поделиться некоторыми идеями:
1) По-максимум объединять шейдеры. Один эффект = один шейдер. Действительно, как вы говорили выше, цепочки эффеков тормозят. 640х480 превью не укладывается в 60фпс уже после трёх звеньев, наступает няшная боттлнека по памяти. Можно вообще написать либо убершейдер со всем и поставлять ему параметры, или написать синтезатор шейдеров. Я, впрочем, этого не делал — проще написать заново/скопипастить матрицы для RGB-YUV. И есть одно исключение — блюр, его надо делать в два этапа, причем тащить координаты сэмплов текстуры из вершинного шейдера как varying, не делая расчетов во фрагментном шейдере.
2) Пул переиспользуемых объектов. Все эффекты на самом деле работают на одном фреймбуфере с двумя пинг-понг текстурами. Самим звеньям-эффектам свои текстуры нафиг не нужны :D.
3) Для превью сразу делать маленькую текстуру с маленьким же фреймбуфером, а потом уже применять эффекты.
Буду очень удивлен, если вы не выиграете :) Качественно сделано
Спасибо на добром слове))
Да, очень хорошо сделано :)
Желаю Вам удачи и победы!
Вы так легко всё описываете, как будто всё настолько просто с iOS программированием, что самому хочется заняться. Спасибо вам.
Займитесь! Это так приятно и весело! :)
Спасибо за статью, жду исходники.
А есть в вк группа/страничка/некий представитель, где можно узнавать новости обо всех конкурсах, которые будет проводить вк?
В принципе здесь vk.com/apiclub всегда публикуют новости, но иногда забывают.
Что-то пропустил конкурс. С месседжером была более развернутая рекламная компания. Тут узнал, после окончания сроков.
AdBlock стоит? Недели две на хабре справа весел баннер с рекламой конкурса.
Видел только всеми любимого на хабре Тинькова.
Значит проморгал.
Ты очень мало пьешь
А почему не стали использовать встроенные в iOS фильтры из Core Image?
А там есть фильтры? О_О
Да, есть. Меньше, конечно, чем на OS X, но есть. Пруф.
Не устраивает скорость их работы, медленнее чем GPUImage в несколько раз. Против OpenGL не попрешь)
А зачем понадобился assetsRange?
Чтобы только несколько крайних фоток грузить?
Ага, гружу только крайние, при листании дальше :)
В приложении под iPad не хватает только вычитания фотографий, для 100-процентной подгонки))
Я думаю, все равно 100-процентно не подгонишь, но хотя бы так, на глаз :)
Хотя идея здравая :)
Выкладывайте код, пожалуйста, после опубликования результатов, было бы интересно!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории