#unitytips Dev Takeover: VFX и шейдеры с Гарри Алисавакисом

COMMUNITY TEAM / UNITYUnity Community
Nov 4, 2021|10 Мин
#unitytips Dev Takeover: VFX и шейдеры с Гарри Алисавакисом
Эта веб-страница была переведена с помощью машинного перевода для вашего удобства. Мы не можем гарантировать точность или надежность переведенного контента. Если у вас есть вопросы о точности переведенного контента, обращайтесь к официальной английской версии веб-страницы.

Серия #unitytips Dev Takeover проводится на нашем аккаунте @unitygames в Twitter. Команда Unity приглашает суперпользователей из нашего сообщества поделиться своими знаниями, советами и рекомендациями непосредственно с нашими подписчиками. Мы начнем с Гарри Алисавакиса, технического художника студии Jumpship и необыкновенного мастера VFX.

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

В настоящее время Гарри работает техническим художником в предстоящей игре Somerville в Jumpship и проводит свободное время, изучая VFX и шейдеры. Он продолжает вдохновлять творцов, еженедельно собирая твиты о разработке игр под названием "Technically Art", где также пропагандирует работу других талантливых художников (обязательно следите за ним!). На своем канале в Discord, "Technically Speaking", он ведет чаты о техническом искусстве, творческих задачах Unity и AMA, чтобы ответить на как можно больше вопросов пользователей. Посмотрите его здесь.

Ниже представлены лишь несколько снимков из последних работ Гарри. В его портфолио вы найдете еще больше работ.

Художественное оформление
Художественное оформление
Художественное оформление
Художественное оформление

Теперь перейдем к советам #unitytips, любезно предоставленным Гарри Алисавакисом.

Временные рамки системы частиц

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

В Unity Timeline имеет встроенную поддержку систем частиц, поэтому вам не потребуется никаких собственных скриптов. Просто перетащите свою систему частиц прямо туда, и вы сможете панорамировать ее.

Timeline

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

Анимация Timeline
Пользовательские вершинные потоки

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

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

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

Самое замечательное, что мы можем добавить любые произвольные данные к нашим вершинам и использовать их в нашем пользовательском шейдере так, как нам нравится. ✨ В этом и заключается красота пользовательских вершинных потоков в системах частиц: Мы можем передавать информацию о частицах нашим вершинам и использовать ее только по мере необходимости.

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

Модуль рендерера
В шейдерный график

Наконец, давайте сделаем простой шейдер растворения для нашей системы частиц с помощью Shader Graph. Мы говорим о неосвещенном, двустороннем шейдере Universal Render Pipeline (URP) с альфа-обтравкой. Интересно отметить, что именно эффект растворения - третий компонент наших ультрафиолетовых лучей.

Граф шейдера

Вы можете задаться вопросом, почему, особенно если учесть, что мы обычно работаем с UV-координатами для выборки текстур через компоненты x и y.

Рядом с названием каждого потока вы увидите, где хранятся данные.

Gif

Здесь новый поток хранится в файле TEXCOORD0.z, который соответствует третьей компоненте первого канала текстурных координат (он же UV0.z). При добавлении процента возраста на протяжении жизни это значение будет начинаться с нуля и двигаться к единице в течение жизни частиц.

В нашем шейдере это заставляет частицы растворяться со временем. Применяя шейдер к системе частиц, мы получаем вот такой аккуратный результат:

Gif

Пока все хорошо, но что, если мы хотим получить еще больший контроль над временем жизни частиц? Процент возраста работает, но он довольно линейный и не очень удобен для создания более сложных эффектов. Решение кроется в этом модуле Custom Data:

Пользовательские данные

Мы можем использовать Custom1.x вместо процента возраста, что, в свою очередь, позволяет нам использовать кривую, которая изменяет значение в течение времени жизни частиц, подобно встроенным кривым, таким как Size over Lifetime.

Gif

Теперь мы можем лучше управлять тем, как наши частицы растворяются со временем. ✨ Как это здорово!

Gif

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

Тем не менее, мы будем рады узнать о ваших собственных креативных вариантах использования пользовательских вершинных потоков в комментариях ниже.

Счастливого VFXинга! ✨

Еще #советы #объединения?

Следите за нашим твиттером Unity for Games, чтобы получать еженедельные советы #unitytips по вторникам и ежемесячные Dev Takovers. Сообщите нам в комментариях, кого бы вы хотели видеть в наших будущих Dev Takeovers в Twitter.