Стилизованный шейдер лавы

<?the_title()?>

Перевод тьюториала с Patreon, в котором описан шейдер лавы из игры Astro Kat. Полный код и текстуры приведены в конце.

Некоторые возможности с этим шейдером, при использовании различных текстур и настроек! (Движется очень быстро, чтобы показать поток: D)

ПРИМЕЧАНИЕ: для лучшего эффекта данный шейдер использует цвета вершин, я рекомендую получить PolyBrush из диспетчера пакетов!

У меня есть статья о Polybrush здесь

Он также нуждается в хорошем количестве пост-эффекта свечения

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

Пойдем пошагово:

Искажение

кусочек кода из шейдера лавы

Проецируйте текстуру шума на мировое положение так, чтобы она выглядела аккуратно, затем прокручивайте ее, используя _Time. (Разделите x и y для улучшенного контроля потока).

шейдер лавы, код

Добавьте еще один слой для глубины, второй слой имеет другой масштаб.

Главная текстура с искажением

искажения главной текстуры

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

Как и в случае с шумом искажения, перемещайте его по времени с помощью _Time.

Добавьте дополнительное искажение, основанное на красном цвете вершин, чтобы рядом с объектами рисунок лавы был немного другой.

кусок кода

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

Раскрашивание

кусок кода

Интерполируйте 2 цвета поверх основной текстуры, с переменной для смещения текстуры. Затем умножьте, чтобы она светилась.

Края

шейдер лавы

Создайте линию пены / края, используя текстуру глубины камеры и экранное положение.

Затем добавьте текстуру к краю с помощью плавного перехода, используя основную текстуру.

кусок кода

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

кусок кода

Наконец добавьте край, умноженный на цвет, затем умноженный на яркость для эффекта свечения.

Верх

кусок кода

Возьмите основную текстуру и примените к ней smoothstep, чтобы получить самую яркую часть (с нарисованной текстурой это «трещины»), умноженную на красный цвет вершины, чтобы немного ее затемнить. Но вы можете удалить эту часть, если хотите, чтобы свечение оставалось везде.

кусок кода

Так же, как с краями, умножьте на вычтенную из единицы величину, чтобы убрать трещины наверху из основной текстуры.

кусок кода

Верните ее обратно с цветом и перемноженную для свечения.

Цвета вершин

шейдер лавы, код

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

Перемещение вершин

кусок кода

Движение вершин представляет собой точно такие же синусоидальные волны, как в шейдере воды (ссылка в начале), только умножается на красный цвет вершины, поэтому перемещение меньше на более темных / холодных частях.

Готово! В коде шейдера каждая часть прокомментирована, так что вы можете прочитать его тоже :)

Рисование цвета вершин

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

В Astro Kat выглядит симпатично!

Код шейдера: ссылка на PasteBin

Настройки для версии в гифке Astro Kat:

настройки для шейдера лавы

И 2 текстуры:

текстура для лавы
текстура шума для лавы

Оригинал статьи: https://www.patreon.com/posts/stylized-lava-32245619

Понравилась статья? Поделиться с друзьями:
Автор natalya
Переводит для Вас самые интересные статьи про разработку игр. По образованию физик-программист. Техническими переводами начала подрабатывать еще на старших курсах и постепенно это переросло в основное занятие. Интересуется гуманитарными технологиями, пробует себя в журналистике.

Добавить комментарий