Найти в Дзене

№205. Godot4. Шейдер для анимации флага.

В этой статье покажу как можно легко и непринужденно создать анимацию флага при помощи простого шейдера ! Для работы нам потребуется спрайт флага.
Единственное что надо сделать - добавить свободного места в спрайт. У меня в итоге получилось вот так : Закидываем картинку в годо, подключаем шейдер.
И начинаем накидывать код. Для начала пустим основную волну. Для этого возьмем горизонтальный градиент с UV.x, и размножим его при помощи синуса.
Подадим это всё в COLOR и сможем рассмотреть нашу черно белую волну. Чтобы наш спрайт изгибался при помощи этой волны надо подмешать её в UV оригинального спрайта.
Делается это просто : Тут я сразу поделил значение волны на 20, потому что иначе спрайт будет слишком сильно модифицирован. Давайте заставим нашу волну двигаться. Для этого прикрутим TIME в синус. Получилось вполне неплохо. Но представим что у нас есть флагшток слева, и левая часть флага должна быть зафиксирована.
Для решения этой задачи мы можем снова взять горизонтальный градиент с UV и
Оглавление

В этой статье покажу как можно легко и непринужденно создать анимацию флага при помощи простого шейдера !

Погнали !

Для работы нам потребуется спрайт флага.
Единственное что надо сделать - добавить свободного места в спрайт. У меня в итоге получилось вот так :

-2

Закидываем картинку в годо, подключаем шейдер.
И начинаем накидывать код.

Для начала пустим основную волну. Для этого возьмем горизонтальный градиент с UV.x, и размножим его при помощи синуса.
Подадим это всё в COLOR и сможем рассмотреть нашу черно белую волну.

-3

Чтобы наш спрайт изгибался при помощи этой волны надо подмешать её в UV оригинального спрайта.
Делается это просто :

-4

Тут я сразу поделил значение волны на 20, потому что иначе спрайт будет слишком сильно модифицирован.

Давайте заставим нашу волну двигаться. Для этого прикрутим TIME в синус.

-5
-6

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

-7

Результат

-8

Получилось вполне достойно. И напоследок добавим флагу объем.
Для этого подмешаем в цвет оригинальной текстуры нашу черно белую текстуру волны.

-9

ДИАГОНАЛЬНАЯ ВОЛНА


Для того чтобы сделать наклон градиенту достаточно сложить «градиенты» UV.
( я вынес сразу в переменную размер волны в виде вектора )

-10

Ну а дальше всё по старой схеме.
Накидываем синус, и подмешиваем результат в UV спрайта !

-11
-12

Меняя значения переменной SIZE , можно получать различные наклоны градиента.

Ну а если пойти еще дальше…

-13

На этом всё.
Подписывайтесь на канал,
вступайте в группу в ВК.
Удачи в изучении годо !