#DevStory — История создания приложения ShadersCode

Нам пишет Ален Корбут

Однажды я решил поближе познакомиться с шейдерами… и тогда появился “ShadersCode”…

#DevStory — История создания приложения ShadersCode. Фото.

#DevStory — История создания приложения ShadersCode. Фото.

В начале своей карьеры разработчика я увлекался GameDevом и какие-то основы шейдеров постиг еще тогда. Увы, спустя какое-то время я растерял и этот небольшой багаж знаний, чему в немалой степени способствовало отсутствие практического опыта, и все пришлось начинать с нуля.

Потратив немного времени, я нашел в интернете отличный сайт (несмотря на то, что в приложении существует офлайн-версия в виде pdf, я рекомендую посетить этот сайт всем и каждому, кто хочет изучить язык шейдеров). Он полностью удовлетворил мои требования на тот момент и стал прекрасной площадкой для изучения GLSL.

Стоит отметить, что существуют и другие аналогичные языки для написания шейдеров, например, HLSL или Metal Shading Language. Отличий между этими языками немного, поэтому разобравшись с одним, вы легко освоите и другой.

Однако вернемся к GLSL.

До определенной поры The Book of Shaders меня полностью устраивал, но в какой-то момент захотелось перейти на телефон и не быть постоянно привязанным к компьютеру, к тому же на носу была очередная поездка, и так уж получилось, что ноутбук с собой в дорогу я не брал.

Моя первая мысль: надо скачать похожее приложение, но на телефон, наверняка уже есть что-то готовое. Спустя какое-то время я нашел несколько вариантов, и только один из них был бесплатным и позволял писать шейдеры прямо на iPhone. 

В целом приложение меня устроило, если, конечно, опустить тот момент, что UI / UX был ужасный. Тем не менее базовое — написание кода и просмотр результата — оказалось доступно и всегда под рукой, а это уже что-то.

Платные варианты я даже не рассматривал, так как за цену 10 долларов мне предлагали практически то же, что и в бесплатной версии.

В общем, пользовался я приложением, пользовался, и не было печали до того момента, пока не обнаружилось, что оно вовсе не работоспособно без интернета. Благо узнал я об этом до поездки, хоть и за день до вылета.

Не совсем понимаю, почему подобное приложение требует соединения с интернетом, но факт остается фактом — без Сети подобный продукт можно “выкинуть”. Пришлось исправлять ситуацию самому…

Первая, черновая версия была готова буквально за пару часов и позволяла делать три простые задачи: написать GLSL-код, просмотреть результат и заменить текстуру.

Для написания кода я взял обычный UITextView, а для запуска использовал SKSpriteNode в связке с SKShader. Достаточно для того момента. И никакого интернета, все полностью в офлайне!

В самолете я даже написал несколько своих вариантов шейдеров, читая параллельно книгу в pdf. По прилету домой я уже точно знал, чего мне не хватает в приложении, и тут же принялся его допиливать. 

Вторая версия привнесла самое главное (как раз то, чего мне не хватало) — спецификацию по языку шейдеров. Я нашел отличный и удобный pdf-файлик со всеми нужными моментами по GLSL. 

Для удобства чтения все данные были перенесены в plist с помощью простого скрипта, которому я скормил копипастом все нужное из оригинальной спецификации, а проблемные места поправил вручную. Отображение реализовано с использованием стандартных iOS таблиц (UITableView). Сюда же был добавлен линк на pdf-версию. 

В последней закрытой версии была добавлена поддержка Apple Watch, которые лежат уже несколько лет практически без использования. Там схема, аналогичная iOS: SKSpriteNode + SKShader, но все находится на WKInterfaceSKScene, а не на SKView.

Для App Store-версии уже был подготовлен полноценный дизайн и добавлены простые samples, оформленные в виде уроков для начинающих.

Пока приложение поддерживает только fragment shaders и работу с текстурами, но в дальнейшем планируется добавить поддержку vertex shader и 3D-моделей. Также в ближайшее время, если найдется свободная минутка и хоть кому-то понравится приложение, будет добавлен полноценный error handling для кода и нумерация строк.

Для тех, кто дочитал до конца: после допиливания всех моментов и выпуска нескольких версий все исходники будут доступны в открытом доступе на GitHub под этим аккаунтом.

Ищите “ShadersCode“ в iOS App Store, пишите пожелания и отзывы. Приложение полностью бесплатное (и без in-app purchase), работает в офлайне и без рекламы.

Название: ShadersCode — learn and code
Издатель/разработчик: Alen Korbut
Цена: Бесплатно
Встроенные покупки: Нет
Совместимость: iPhone/Apple Watch
Ссылка: Установить

Pages_
Если вам есть чем поделиться с другими читателями нашего сайта, пишите на advert@appleinsider.ru и не забудьте указать свое имя или ник. Мы внимательно читаем входящие письма и публикуем ваши самые интересные истории.

История AppleОбзоры приложений для iOS и MacРазработка приложений для iOS