Важное примечание. Все работы над ISF и Shadertoy выполняются творческими кодировщиками. На их создание часто уходит много-много часов, и они представляют собой значительный объем работы художника. Хотя обе эти платформы существуют, чтобы делиться технологиями и вдохновлять других, следует уважать авторские права на творения. Часто создатель пишет любую лицензию, которую он предпочитает, в комментарии в начале шейдера (как показано ниже). Если вы не можете найти лицензию или вам действительно нужна менее строгая, лучше всего просто спросить самого автора! Многие из них рады видеть, что их работы используются в художественных целях, и в конце этой статьи мы перечислим несколько профилей художников, которые дали нам явное разрешение, позволяющее нашим пользователям использовать и ремикшировать их общедоступные работы.

//MIT License
or 
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0

Расширьте свою библиотеку шейдеров

С помощью этих конвертеров можно добавлять новые сцены в вашу библиотеку сцен. И www.shadertoy.com, и www.interactiveshaderformat.com имеют невероятные сообщества художников и массу действительно крутого контента, который можно запускать в Synesthesia. Эти творения представляют собой шейдеры - контент, генерируемый в реальном времени, полностью созданный в коде GLSL.

Хотя все они являются шейдерами, Interactive Shader Format (ISF) и формат Shadertoy немного отличаются от нашего собственного формата Synesthesia Shader Format (SSF). Таким образом, шейдеры не могут запускаться в точном копировании с любого веб-сайта. Однако инструменты импорта в Synesthesia запускают процессы преобразования, поиска и замены переменных, переформатирования кода, изменения имен функций, чтобы преобразовать шейдеры в SSF. Все сцены ISF имеют элементы управления, в то время как Shadertoy имеет большую библиотеку работ. И в ISF, и в Shadertoy есть ряд функций, которые Synesthesia просто не поддерживает. Точно так же у Synesthesia есть некоторые дополнительные функции, которыми не могут воспользоваться автоматически сценарии ISF или Shadertoy. Знайте, что после импорта с одного из этих сайтов вы можете получить действительно круто выглядящую сцену, но она не будет автоматически реагировать на звук или обязательно сможет использовать ваши мультимедиа.

Как преобразовать формат интерактивного шейдера

Прежде всего зайдите на www.interactiveshaderformat.com. Щелкните шейдер на главной странице или найдите тот, который вам нравится. На странице определенного шейдера найдите кнопку Загрузить в правом верхнем углу.

В зависимости от выбранного шейдера вы либо загрузите файл .fs, либо заархивированную папку, содержащую оба файла Файл .vs и файл .fs. Если вы загружаете и получаете заархивированную папку, это связано с тем, что сцена ISF использует как настраиваемый шейдер фрагментов (.fs), так и настраиваемый вершинный шейдер (.vs). Synesthesia не поддерживает настраиваемые вершинные шейдеры, поэтому без ручного изменения кода этот конкретный шейдер ISF, скорее всего, не будет работать в Synesthesia.

Теперь перейдите на панель импорта в Synesthesia и нажмите кнопку «Поиск», чтобы выбрать только что загруженный файл .fs.

Нажмите «Открыть». Теперь путь к файлу должен появиться в строке поиска, а кнопка «загрузить сцену» будет гореть вместо серого. Щелкните «Загрузить сцену», и Synesthesia попытается преобразовать сцену в формат SSF. Вы увидите один из следующих двух результатов:

Слева успешное преобразование. Сцена теперь работает в Синестезии!

Справа неудачная конверсия. Обратите внимание на красный текст внизу, сообщающий об ошибке. Здесь у нас ошибка компиляции шейдера. Обычно это означает, что шейдер использует некоторую функцию ISF, которую мы еще не поддерживаем, или что у него есть конкретное имя переменной или функции, из-за которых наш конвертер отключился.

Если все прошло успешно, перейдите на страницу управления! Самое приятное в ISF - это то, что у каждого шейдера есть элементы управления, как у сцен Synesthesia. Так что посмотрите, как эти элементы управления сценой ведут себя в Synesthesia.

После загрузки Synesthesia теперь имеет SSF-версию этой сцены во временной памяти. Если вы хотите сохранить сцену и добавить ее в свою библиотеку сцен, нажмите «создать .synScene в библиотеке». Вам нужно будет создать собственную папку для сцен, если у вас ее еще нет. Synesthesia создаст файл .synScene в вашей папке пользовательских сцен, и теперь вы должны увидеть сцену в своей библиотеке сцен с миниатюрой «ISF».

Даже если преобразование сцены завершится неудачно и вы получите ошибку компиляции, вы все равно можете создать .synScene. Большая часть работы по преобразованию шейдера будет уже выполнена. Скорее всего, осталось выполнить еще несколько шагов вручную. Поэтому, хотя сцена не запускается, вы можете создать .synScene, найти его в библиотеке и нажать на карандаш, чтобы «отредактировать сцену». Откройте файл main.glsl в текстовом редакторе и попробуйте исправить ошибки компиляции, которые он дает. Иногда это исправление за 3 минуты, иногда оно того не стоит.

Как конвертировать из Shadertoy

Сначала зайдите на www.shadertoy.com. Щелкните шейдер на главной странице или найдите тот, который вам нравится. Находясь на странице определенного шейдера, скопируйте ссылку вверху страницы. В URL-адресе есть специальный ключ, указывающий на этот конкретный шейдер. Затем Synesthesia использует Shadertoy API для доступа к коду из этого шейдера для выполнения преобразования.

Скопировав URL, перейдите на панель импорта в Synesthesia и вставьте ссылку в строку поиска Shadertoy.com.

Когда на панели появится действующий URL, кнопка «загрузить сцену» будет подсвечена, а не выделена серым цветом. Нажмите «Загрузить сцену», и Synesthesia попытается получить доступ к ней через API Shadertoy.com. Затем он попытается преобразовать шейдер в формат SSF.

Примечание. Многие шейдеры выдают ошибку «не найдено». Это связано с тем, что автор работы решил не публиковать ее в API Shadertoy.com, возможно, потому, что не хотел, чтобы она использовалась без его ведома.

Если вы успешно загрузили сцену (как в случае слева), вы увидите, что сцена запущена в окне визуализатора. Теперь у Synesthesia есть SSF-версия этой сцены во временной памяти. Если вы хотите сохранить сцену и добавить ее в свою библиотеку сцен, нажмите «создать .synScene в библиотеке». Вам нужно будет создать собственную папку для сцен, если у вас ее еще нет. Synesthesia создаст файл .synScene в вашей папке пользовательских сцен, и теперь вы должны увидеть сцену в своей библиотеке сцен с миниатюрой «Shadertoy».

Обратите внимание, что многие сцены из Shadertoy оптимизированы для работы с разрешением 768 x 432. Synesthesia автоматически пытается запустить эти шейдеры с разрешением 1280x720 (720p), что означает, что сцены часто работают со скоростью менее 60 кадров в секунду. Если сцена слишком медленная, щелкните карандашом, чтобы отредактировать сцену. Откройте файл scene.json и измените переменные «WIDTH»: и «HEIGHT»: на 768 и 432 соответственно (или любое другое разрешение 16: 9, которое меньше значения по умолчанию).

Если шейдер был найден, но преобразование сцены завершилось неудачно и вы получили ошибку компиляции, вы все равно можете создать .synScene. Большая часть работы по преобразованию шейдера уже будет выполнена. Скорее всего, осталось выполнить еще несколько шагов вручную. Поэтому, хотя сцена не запускается, вы можете создать .synScene, найти его в библиотеке и нажать на карандаш, чтобы «отредактировать сцену». Откройте файл main.glsl в текстовом редакторе и попробуйте исправить ошибки компиляции, которые он дает. Иногда это делается за 3 минуты, а иногда может потребоваться гораздо больше времени.

Различия между ISF, Shadertoy и SSF

Во-первых, если вы не отредактируете их самостоятельно, ни одна из сцен из ISF или Shadertoy не будет реагировать на звук. Synesthesia использует специальные звуковые формы в шейдере, такие как syn_Level, syn_BassLevel, syn_HighHits и syn_Presence для анимации определенных переменные в шейдере. Чтобы узнать больше о формате SSF и полный список этих переменных, ознакомьтесь с нашей документацией здесь: https://synesthesia.live/docs/index.html Для каждой сцены Synesthesia по умолчанию вы увидите эти syn_AudioVariables засоряет код. Если вы хотите самостоятельно добавить звуковую реактивность к только что преобразованной сцене, просто введите эти переменные. Все они меняются от 0,0 до 1,0.

Во-вторых, обратите внимание, что преобразование из ISF обычно лучше, потому что в шейдерах ISF уже есть элементы управления. Если вы конвертируете из Shadertoy, шейдер будет работать в реальном времени, но вам придется добавлять элементы управления самостоятельно. Scene.json будет практически пустым, в нем будут только элементы управления мышью, которые фактически используют только около 25% шейдеров Shadertoy. Если вы хотите добавить дополнительные элементы управления, вы можете добавить их в файл scene.json.

Причины неудачной конверсии

Некоторые вещи в ISF и Shadertoy не поддерживаются в Synesthesia. Наш конвертер Shadertoy может успешно работать с текстурами Multipass, Webcam и Shadertoy.com . Однако Synesthesia не поддерживает VR, Soundcloud, микрофонный вход Shadertoy или клавиатуру. При вводе звука или клавиатуры вы получите сообщение об ошибке, и вам придется вручную вырезать код, содержащий поиск текстуры. Оскорбительная строка будет выглядеть так:

= texture(iChannelX, vec2());

Для ISF Synesthesia может работать с импортом и большинством элементов управления. Он не работает на audio, audioFFT и long. Он также не работает, если сцена ISF имеет специальный вершинный шейдер.

Профили артистов

Это ссылки на несколько профилей художников на Interactiveshaderformat.com и shadertoy.com, с которыми мы связались и которые согласились разрешить нашим пользователям делать ремиксы и использовать их работы.

Mojo Video Tech: https://www.interactiveshaderformat.com/u/mojovideotech

Шейн: https://www.shadertoy.com/user/shane

Aiekick: https://www.shadertoy.com/user/aiekick

Благодарности: Shadertoy и API Shadertoy.com созданы Иниго Квилезом и Полом Джеремиасом. Интерактивный формат шейдеров и веб-сайт ISF были созданы и поддерживаются командой VIDVOX. Мы благодарны за их труд и созданные ими творческие сообщества.