Найти тему
CodeWrite

#2. Уроки по Shader Graph в Unity.

Оглавление

1. Мастер-нода.

Мастер-нода PBR Shader
Мастер-нода PBR Shader

Мастер-нода - это что-то наподобие главное центра управления. Именно она даёт внешний вид объекта. Например, в вход Albedo подключается сам цвет объекта. Если мы выберем красный, то наш объект станет красным. Например, в вход Alpha передаётся прозрачность объекта. И так далее. Все входы и примеры мы рассмотрим далее в этой статье, поэтому не бойтесь, что что-то не поняли.

2. Типы Shader Graph.

1. Unlit Graph

Тип шейдера, который не реагирует на освещение. Давайте посмотрим, как выглядит мастер-нода.

Мастер-нода Unlit Shader
Мастер-нода Unlit Shader

Как мы видим она отличается от PBR Master. Это и понятно. Так как, например, как объекту можно задать металлический блеск, если объекту всё равно на свет?

Давайте применим этот ShaderGraph на материал.

Для этого создайте материал, перейдите в окно инспектора и прямо под названием есть Shader. Во всплывающем окне выберите Shader Graph.

-3

Теперь выбираем созданный нами шейдер.

-4

Теперь перекидываем этот материал на любой объект. Я применил его на куб.

Слева - PBR, справа - Unlit.
Слева - PBR, справа - Unlit.

На скриншот выше вы видите результат. Для наглядности я создал направленный источник света. На кубе справа я применил Unlit Shader, а на левом PBR Shader(В следующем пункте подробнее). Как мы видим, правый игнорирует свет. Игнорирует настолько, что мы не видим даже граней куба.

2. PBR Graph

-6

В отличии от Unlit Graph PBR Graph реагирует на свет.

Опять посмотрим на этот скриншот.

Слева - PBR, справа - Unlit.
Слева - PBR, справа - Unlit.

На левом кубе PBR Graph. И как мы видим, он прекрасно реагирует на источник света.

3. Sub Graph.

-8

Если мы создадим Sub Graph, то после открытия не увидим мастер-ноды. Так как Sub Graph не является самостоятельным шейдером. Это больше утилита. Например, у нас есть огромная связка, в которой мы применяем к текстуре какие-нибудь свойства. Эту связку мы очень часто используем в разный шейдерах. Но вот её копировать не удобно. И даже если мы захотим что-то в ней поменять, то придётся заходить в каждый Shader Graph и в нём менять эту связку. Вот на помощь и приходит Sub Graph. Мы можем в нём создать эту связку и передать итог в любой шейдер.

Например, на скриншоте снизу я создал Sub Graph, в котором применяю цвет(дальше в статье мы это разберём). После чего я файл с этим Sub Graph'ом переношу в наш уже созданный в позапрошлом пункте Unlit Graph. И применяю к мастер-ноде этот цвет. И как видим, наш куб поменял цвет.

-9

3. Базовые ноды.

1. Введение

Если вы не поняли, то нодами называются все вот эти квадратики. Например на предыдущем скриншоте мы используем ноду цвета(Color), ноду Sub Graph(Out_Vector4, а в окне справа SubGraph) и мастер-ноду(Unlit Master).

Так же для создания большинства нод достаточно нажать на правую кнопку мыши>Create Node.

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

2. Цвет.

Для выбора цвета, существует нода Color.

Нода Color
Нода Color

Разберём её устройство.

-11
  1. При нажатии на этот прямоугольник, мы можем выбрать нужный цвет.
  2. Это выход ноды, мы можем взяться за неё и перетянуть нить к другой ноде ко входу.
  3. Показывает, что выход передаёт 4 значения(Красный, зелёный, синий, прозрачность(эквивалент x, y, z, w)). Если мы передадим 4 значения к входу, который принимает только 2 значения, то 3-тье и 4-ое значение не передадутся.
  4. Выбор режима:
  • Default - обычное отображение цвета.
  • HDR - возможность передавать более яркий цвет(см. скриншот снизу).
Настройка цвета в режиме HDR
Настройка цвета в режиме HDR

Например, я выберу режим HDR и поставлю интенсивность на 3. Подключу всё это к мастер-ноде:

-13

Теперь наш цвет на нашем кубе стал таким интенсивным, что он даже начал светиться!

Куб с нашим шейдером
Куб с нашим шейдером
Интересный факт:
Так как мы передали цвет с такой интенсивностью в вход Albedo, значит он применился, как цвет, что означает, что его яркость зависит от освещённости. Говоря простыми словами, чем он ближе к источнику освещения, тем ярче будет свечение этого куба.
-15

3. Числа.

-16

Ноды Vector могут служить для разных вещей. Например, в них можно записать координаты или цвет, если в x, y, z, w передавать соответственно r, g, b, a.

Например, я передал единицу по красному каналу, по зелёному и синему 0.

-17
-18

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

4. Property.

Это своеобразные переменные. Например, я хочу изменить цвет быстро или из кода, но я не могу постоянно запускать окно Shader Graph, чтобы это сделать. Намного легче изменять через инспектор. В этом нам поможет Property. Можно создать его двумя способами.

1. Первый способ

-19
  1. Нажимаем на +.
  2. Выбираем нужный тип переменной.
  3. В окне появится переменная. Можно выставить значение по желанию.
  4. Перетягиваем переменную из окна в Shader Graph. И соединяем с мастер-нодой.
  5. Теперь в инспекторе мы можем изменять значения.

2. Второй способ.

-20
  1. Нажимаем правой кнопкой мыши по нужной ноде.
  2. Выбираем Convert To Property

Урок подошёл к концу. Я писал его довольно долго. Поэтому надеюсь получилось хорошо. Велик шанс, что где-то в статье я опечатался, поэтому прошу написать об этом в комментариях. Следующий урок будет через пару дней. Также пишите, а чём бы вы хотели узнать. В следующем уроке изучим несколько базовых нод и математические вычисления.