Как написать свой Metalagram. Color Lookup Tables или CLUT-ы в Metal

Смоки, тут не Вьетнам. Это — боулинг. Здесь есть правила.
Уолтер Собчак/Большой Лебовски

В самом первом посте этого блога я обещал, что мы напишем свою версию приложения фото-камеры с фильтрами, что-то вроде Instagram-а или встроенной Камеры iOS. В 100500й раз. Приложение будет конечно же круче в тоже самое количество раз. Все дело в количестве припоя кода которого мы нальем в программу, что-бы сделать её работающей. Его практически не будет. Сомневаюсь, что у отцов-основателей Instagram были наши сегодняшние возможности. А еще у нас будут большие файлы формата Cube LUT Specification Version 1.0. В общем пишем свой Instagram!

Приложение будет выглядеть как-то так:

Metalling App

Вот сегодня это и сделаем: возьмем в руки отвертку и паяльник XCode и напаямем накодируем кода: быстренько обернем Metal в свой фреймворк и сосредоточимся, в итоге, исключительно на разработке фильтров не отвлекаясь на детали. А еще проще использовать готовый через cocoapods: DPCore3. Эта штука находится еще на стадии активных доработок, но вполне сгодится для использования в качестве слоя абстракции уменьшающего количества кода на единицу  времени программиста. Но обо всем по порядку.

Читать далее

Первый «настоящий» метал-api-ческий фильтр

Этот пост не для опытных «металлистов», было бы дерзко сразу вот так вот начать публиковать готовый код фильтров с минимумом комментариев. Поэтому будет много текста и вилами по воде, но зато подробно и поможет (надеюсь) осознать красоту и простоту идеи. Ко всему прочему, мне и самому интересно на сколько я могу низко пасть объяснить простым языком неофиту всю глубину падения прекрасного мира Metal. Во-вторых: все мне говорят я понимаю, что последовательное изложения материала упорядочивает информацию. И это важно.

Для первого раза выберем какой-то фильтр без объяснения что-это, зачем, какие фильтры бывают в природе и бывают ли только фильтры. Просто будем знать, что иногда с изображением можно выполнить какой-то трюк и его изменить, испортить, улучшить, или вообще синтезировать другое. Главная тема показать как с помощью iOS Metal API можно этого добиться. Никакой ловкости, только рутинное вбивание кода на клавиатуре. Начнем с классики жанра: фильтра управления насыщенностью изображения.

Читать далее