воскресенье, 3 февраля 2019 г.

Анимированный Godlight с помощью шейдера

Unity v2018.2.2
Amplify Shader Editor v1.5.4

Загрузить шейдер















Итак по порядку:


  1. Time это счетчик, который всегда изменяется на +1 . Значение в Scale = 0,5 масштаб влияет на скорость счетчика. 
  2. Add к значению U от Texture Coordinates прибавляем Time. Получается что текстура будет смещаться по значению U (горизонтальной координате).


    Так выглядит Texture Coordinates и каждый канал по отдельности.
  3. Append объединяем два канала в дин поток. Мы получаем Texture Coordinates, с постоянно смещяющейся координатой U.
  4. Multiply умножаем координаты на Vector2. Так мы сможем масштабировать текстуру. Чем выше число тем больше тайлинг, чем ниже - соответсвенно меньше.
  5. Noise Generator процедурная карта Noise, для того чтобы она работала, нужны координаты. 
  6. Remap переводит пространство Noise Generator  от -1;1 до 0;1. 
  7. С помощью Remap корректируем каждый градиент. Это похоже на функцию цветокоррекции в Photoshop Level. Это мы делаем для того чтобы свет плавно заканчивался ближе к краю плоскости, на которой будет текстура Godlight.
  8. Перемножим все значения, везде где был 0 - черный цвет, - останется черный. 
  9. Clamp - после всех функций Remap нужно делать Clamp. Он отрезает излишки значения, которые вы зададите. В нашем случае это от 0 до 1. 
  10. Умножаем значение параметра alpha цвета Color 0 на текстуру. Так мы сможем внешним управлением регулировать яркость света. Color 0 мы сделали параметром, это значит, что в матерале мы будем видеть цвет и настраивать его.
  11. Основной шейдер к которому мы подключаем. Цвет к Emission, Все остальное к прозрачности.
  12. Shader Model, нам нужна самая простая модель.
  13. Blend Mode, так мы сможем смешивать цвет с окружающими объектами.
  14. ZTest Mode ставим Always, так мы сможем видеть свет поверх всех объектов. 
  15. Параметр Color 0 которым мы будем управлять в материале. 
Убедитесь, что объект не взаимодействует с постеффектом Ambient Occlusion, не отбрасывает тени и не принимает, не взаимодействует с источниками света. 

Для отображения текстуры мы используем в Unity GameObject->Effects->Line. Плоскость которая будет всегда повернута к камере.

Шейдер создан для проекта Spark In The Dark
Спасибо за интерес к уроку! Задавайте вопросы, я постараюсь ответить.

Комментариев нет:

Отправить комментарий

Контакты: gmail mnexuss@gmail.com | ICQ 201882385 | Add me to Skype