Шаблоны функций Metal Shading Language

Metal Shading Language (MSL) — универсальный язык программирования для создания графических и вычислительных функций используемых с приложениями написанными с использованием Metal Framework. Так говорит тутонхамон Apple.

И это в действительности так. Мало того, что MSL реализует синтаксическое подмножество C++, фактически это C++ базирующийся на спеках C++11. Например в MSL реализованы атомарные типы. Об этой фишке я как-нибудь расскажу отдельно с примерами. Однако надо понимать, что GPU не CPU и не поддерживает некоторые специфические вычисления или реализует их крайне не эффективно по сравнению с CPU, поэтому MSL — это некое ограниченное подобие C++11. К слову, MSL не поддерживает лямбда-функции (чорт, а было бы круто конечно, если бы да…). В любом случае это, хоть и маленький шаг одной яблочной компании, но огромный шаг всего человечества.

Читать далее

Реклама

Фильтр реалистичной, «пленочной» коррекции теней

Сегодня я не буду подробно описывать как с помощью Metal Framework и Metal Shading Language запрограммировать фильтр. Т.е. не буду останавливаться на деталях реализации. В целом, предыдущего поста должно было быть достаточно для уверенного понимания как варится программа с использованием этих средств.

Сегодня мы сосредоточимся на идее нового фильтра с точки зрения разработчика этого фильтра (инженера или математика) и покажем как от идеи до воплощения в коде заставить железку работать на благо, например, эстетики. Подумаем как сделать изображение более «привлекательным» в некоторых, специальных случаях.

Читать далее

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

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

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

Читать далее

Что-то вроде мотивационного вступления.

Рано или поздно любой разработчик под iOS или OSX (да и вообще любой разработчик на любой платформе, но я больше знаю про вот всех вот этих…), который хоть немного фотографирует для себя, семьи, друзей, подруг и всего остального человечества и пользует такие программы как Photoshop, Lightroom и уж тем более Instagram, пробует или мечтает сделать свой уникальный Photoshop/Lightroom/Instagram. Или не свой уникальный, но мобильный или более удобный, или более крутой, а результат должен быть лучше, получен проще, в реальном времени, одной кнопкой — и это будет свое и неповторимое. На самом деле, кончено, мы все об этом прекрасно знаем и не боимся сознаться себе — нам это все это просто дико интересно. Интересно погрузиться в мир новых возможностей и высосать из него по максимум инжоя.

Читать далее