Знакомство с шейдерами HeavyM для создания собственных VFX

Введение

Вам интересно создавать собственные визуальные эффекты в HeavyM? В этой статье мы расскажем о захватывающих творческих возможностях, которые предоставляют шейдеры. Кстати, что такое шейдер?

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

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

В программе HeavyM встроенные шейдеры предлагают множество возможностей. Также можно импортировать собственные шейдеры, тем самым бесконечно увеличивая количество комбинаций!

Пример видеоигры с использованием шейдеров: Minecraft

Пример видеоигры с использованием шейдеров: Minecraft

Проекционное картографирование работы шахты

Пример использования шейдера во время проекционного мэппинга

Часть 1: Технология шейдеров

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

Почему шейдеры работают быстро?

Шейдеры - очень легкие программы, потому что, в отличие от программ типа HeavyM, которые содержат несколько сотен тысяч строк кода, шейдер, как правило, содержит всего несколько сотен строк, не более. Скорость работы шейдеров в основном обусловлена архитектурой аппаратного обеспечения, на котором они выполняются: видеокарты. Для того чтобы использовать HeavyM, вам наверняка стоило обратить внимание на этот вопрос, поскольку он позволяет многократно увеличить возможности, предоставляемые программой.

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

Преимущество шейдеров: интерактивное искусство

Благодаря скорости выполнения шейдеров можно создавать изображения в реальном времени, то есть они генерируются в тот момент, когда их видят. Термин "реальное время" используется в отличие от термина precomputed, который применяется к видеофайлу, который рендерится кадр за кадром. Вычисления при рендеринге могут быть очень трудоемкими и занимать до нескольких дней! С помощью шейдеров можно напрямую управлять изображениями, как в видеоиграх. Интерактивное цифровое искусство опирается на этот принцип реального времени, поскольку он позволяет создавать визуальные образы, реагирующие на музыку или движения людей. Чтобы увидеть два примера перформансов, сочетающих музыку и визуальные эффекты, взгляните на работы Странная программа для концертов Эфью Твин или Выступления Нонотака.

Типы шейдеров

Шейдеры - это не что иное, как текстовые файлы с определенным расширением. Мы увидим, что существуют различные типы шейдеров. Их объединяет то, что они написаны на языке GLSL: OpenGL Shading Language. Существуют и другие типы шейдеров, зависящие от платформы и аппаратного обеспечения, но здесь мы сосредоточимся на шейдерах на базе OpenGL. Для использования шейдеров в HeavyM необходима видеокарта, поддерживающая OpenGL 2.0.

Пиксельные шейдеры или шейдеры фрагментов

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

Именно эти шейдеры вам будет интересно использовать в HeavyM. Обычно они представляют собой файлы .FRAG или .FS в случае формата ISF. Формат ISF обеспечивает стандарт для фрагментов шейдеров GLSL, чтобы их было легче интерпретировать в интерактивных приложениях.

Вершинные шейдеры

Вершинные шейдеры используются для преобразования входных пиков в пиксели. 

Это файл .VS, который иногда сопровождает пиксельный шейдер, имеет такое же имя и находится в той же папке.

Где найти шейдеры?

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

Чтобы найти .FS: https://www.interactiveshaderformat.com/

Чтобы найти .FRAG: http://glslsandbox.com/ и https://www.shadertoy.com/

Внимание: .FRAG не поддерживаются в HeavyM. Необходимо конвертировать их в .ISF, и ниже мы приводим способ, как это сделать.

Обязательно проверьте права на использование в лицензии, которая обычно указывается в начале кода шейдера. Если никаких особых указаний нет, авторские права применяются по умолчанию, и мы настоятельно советуем вам обсудить это с автором программы, если вы хотите использовать ее в коммерческих целях.

Разработайте собственные шейдеры

Для создания собственных шейдеров мы советуем использовать непосредственно формат ISF, чтобы они были совместимы с максимальным количеством приложений. Целью данной статьи не является изучение кода GLSL, языка, используемого форматом ISF. Для этого мы рекомендуем ознакомиться с очень подробными сайтами :

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

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

Часть 2: Шейдеры в HeavyM

Программа HeavyM предлагает несколько сотен собственных шейдеров во встроенной библиотеке визуальных эффектов. В зависимости от используемых функций в программе можно использовать несколько типов эффектов.

Эффекты шейдеров на фигурах

При нажатии на красные значки в правой части интерфейса вы получаете доступ к категориям эффектов, которые автоматически адаптируются к нарисованным фигурам. Эти эффекты связаны с группами на панели слоев слева. Все фигуры в группе имеют одинаковый вид. Чтобы получить разные эффекты для разных фигур, необходимо создать другие группы и добавить в них фигуры.

HeavyM Шейдеры - влияние на фигуры

В настоящее время невозможно добавлять или изменять существующие шейдеры эффектов в этой категории.

Шейдеры, генерирующие изображения

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

Шейдеры - генеративные эффекты

Обработка шейдеров на игроках

К проигрывателю можно применить эффекты обработки изображения. Для этого выберите плеер и добавьте эффекты в Свойствах в левом нижнем углу с помощью кнопки +. Эффекты добавляются один за другим. Каждый плеер независим, поэтому источник и эффекты обработки будут разными для разных плееров, даже если они находятся в одной группе.

Шейдеры - эффекты игроков

Обработка шейдеров на последовательностях

Шейдеры обработки изображений также могут быть применены ко всему видеовыходу. Эти эффекты относятся к последовательностям. Чтобы добавить эффект обработки к последовательности, нажмите на шестеренку и добавьте шейдер с помощью кнопки +. Эффекты обработки для последовательностей такие же, как и эффекты обработки для плееров.

Шейдеры HeavyM - эффекты последовательностей

Переходные шейдеры на последовательностях

Переходы также зависят от последовательности и применяются ко всему видеовыходу. По умолчанию применяется переход с затуханием на 0,20 с. Измените этот переход в меню, доступном при нажатии на шестеренку последовательности. Переходы применяются только к входу последовательности.

HeavyM - Переходы

Импорт шейдеров

Мы видели, что в HeavyM есть две основные категории шейдеров: генерирующие шейдеры и обрабатывающие шейдеры. HeavyM позволяет легко комбинировать шейдеры из этих двух категорий. HeavyM предоставляет шейдеры по умолчанию во вкладках "Библиотека" каждого окна выбора шейдера. Все эти шейдеры имеют формат .FS и поэтому соответствуют стандарту ISF. Чтобы импортировать собственные шейдеры на вкладку My Shaders, необходимо соблюдать этот стандарт. Таким образом, параметры ваших шейдеров можно будет легко изменить с помощью интерфейса HeavyM.

Хотите импортировать в HeavyM шейдеры других форматов? С помощью этого инструмента очень легко конвертировать шейдеры: Desktop ISF Editor (Windows beta/Mac) с функциями "Импорт из GLSL Sandbox" и "Импорт из Shadertoy".

И наконец, если вы хотите детально разобраться в архитектуре формата ISF, чтобы создать свой собственный, советуем вам ознакомиться с документацией по формату ISF: https://docs.isf.video/ .

Часть 3: управление шейдерами

Шейдеры позволяют создавать визуальные эффекты в реальном времени, которые можно изменять вживую, не проходя через стадию рендеринга. Вот различные возможности для управления эффектами и создания интерактивных визуальных эффектов.

Параметры шейдера можно изменить, нажав на шестеренку на иконке источника. Шкала значений нормирована между 0 и 100 и не соответствует конкретной единице измерения. В HeavyM предлагаются различные режимы изменения параметров, найти их можно, нажав на стрелку рядом с каждым параметром шейдера.

Режим фиксированного значения

Это режим по умолчанию, который позволяет изменять значение с помощью мыши. Недостатком является то, что за один раз можно изменить только один параметр. Также можно ввести значение с помощью клавиатуры.

Генераторы ценностей

HeavyM предлагает 7 генераторов значений, которые позволяют автоматически изменять параметры шейдеров. Это генераторы типа LFO (Low Frequency Oscillator), подобные тем, которые можно найти в музыкальных программах или синтезаторах. Для каждого генератора есть два режима анимации: BPM или временной. Режим BPM связан с общим Tempo в правом нижнем углу интерфейса и символизируется значком метронома. Временной режим позволяет задать частоту, не зависящую от общего темпа.

HeavyM - LFO

Контроль с помощью тщательного анализа

В правой нижней части интерфейса находится модуль анализа звука. Он позволяет обнаружить изменения амплитуды в 3 различных частотных диапазонах: Bass Mid High. Изменения этих значений можно найти в режимах изменения параметров шейдера.

Шейдеры HeavyM - анализ звука

Органы управления MIDI

Вы хотите вручную управлять несколькими параметрами одновременно? Используйте протокол MIDI. На рынке представлено множество MIDI-контроллеров для музыки. Все они совместимы с HeavyM. Подключите оборудование в окне конфигурации, доступном через оранжевую иконку в правом верхнем углу интерфейса. Затем в режиме обучения MIDI вы сможете настроить связь между параметрами шейдера и клавишами вашего оборудования.

HeavyM Shaders - MIDI

Заключение

Творческие возможности шейдеров безграничны. Эти программы позволяют использовать всю мощь вашей видеокарты всего несколькими щелчками мыши. Компьютер дает вам легкий доступ к генеративному искусству, которое заключается в создании произведений на основе алгоритмов. Многие цифровые художники используют эту технику, например Антуан Шмидт, Мигель Шевалье, Вера Молнар, Ду Чжэньцзюнь, Даниэль Розин... 

В HeavyM мы убедились, что использовать и управлять шейдерами очень просто. Комбинируйте их безгранично, чтобы создать свои собственные визуальные эффекты и свой собственный стиль!