Top
UnityUNREAL ENGINEНовостиОбзоры

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

Бартломей Галас (Bartłomiej Galas) из NatureManufacture рассказал как он создает детализированные шейдеры льда.

Шейдер льда

Когда я играл в Dragon Age Inquisition, во время зимней сцены я увидел на озере лёд и он был восхитителен, по большей мере из-за глубины льда, такое чувство, что во льду был реальный промежуток, а не просто плоская текстура (и я говорю не только о трещинах). Когда я посмотрел на него, я понял принцип и решил создать что-то похожее. После нескольких недель работы (сначала в Unity, затем в Unreal) шейдер был завершён. Честно говоря, я делал его скорее для личного удовольствия, чем с целью создания запланированного продукта. Это лишь маленький проект, который я сделал в процессе создания совершенно иного.

Сложности

Amplify Shader Editor дает огромную возможность тестировать и делать быстрые интерполяции шейдеров. Он работает примерно так же, как и инструменты для шейдеров от Unreal, но содержит немного меньше функций, хотя это меняется с каждым днем, т.к они добавляют всё новые и новые. Это просто прекрасно. Мне нравится сотрудничать с их командой для исправлений и изменений в их системе. Они всегда добавляют что-то крутое, либо фиксят за пару дней если что-то работает не как должно.

Элементы

Я сделал несколько разных типов льда. Это заставило меня создать другие материалы в Unreal и несколько других шейдеров в Unity. В целом конструкция довольно проста, но некоторые карты могут вести себя по-разному относительно сырого и старого льда. Мне пришлось создать разные функции для карт нормалей чтобы получить такой эффект:

Шейдеры включают в себя трещины с эффектом глубины (хотя я бы сказал что у всех текстур такой эффект), как например пузырьки либо замёрзшая вода под поверхностью. Это главная суть, которая дает этому льду идею пространства. Конечно у него есть прозрачность и затемнение границ, так что по сути он ведёт себя как вода. Мель и цвета для разных уровней глубины также присутствуют. Безусловно лёд отражающий, искажает объекты под водой, что в общем все эти эффекты, которые собраны в одном месте библиотекой из 60 текстур, дают огромную возможность модифицировать этот лёд согласно личным целям. Мы сделали материалы для моделей (твёрдые) и для озёр (типы воды).

Организация шейдера

В шейдере/материалах мы можем изменять: глубину воды, мель, цвет глубины, искажение, отражение, глубину льда, интенсивность (2 уровня), трещины и много другого.

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

Где его можно использовать?

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

Пак доступен на движках Unity и Unreal, вот ссылки:

Unity

Unreal Engine

Источник: 80 lvl

Перевел: Гузь Богдан (guzbogdan123@gmail.com)