Digital Water

Digital Water: озёра, реки, водопады и моря для URP

Демо в браузере (браузер с включённым WebGPU)

Digital Water строит воду под ваш рельеф. Компонент Water Body генерирует меш воды по террейнам или обычным мешам. Озеро заполняет котловину под объектом, река идёт по точкам, которые расставляются в Scene view, а море окружает берега и острова. Шейдер воды анимирует на этом меше волны, течение, прибой и пену. GPU-частицы добавляют брызги и дымку у водопадов и морских скал, а земля становится мокрой там, где побывала вода. Под поверхностью работают окно Снелла, полное внутреннее отражение и отдельный объёмный проход для подводной части.

Digital Water

ОЗЁРА

  • Поверхность заполняет котловину под объектом, острова и камни остаются сухими
  • Прибойные волны катятся к берегу, волны Герстнера затухают на мелководье
  • Непрозрачность растёт с глубиной: у берега вода прозрачная, в середине цвет густой и глубокий

РЕКИ И ВОДОПАДЫ

  • Река рисуется прямо в Scene view, Auto Level выставляет её уровень по дну русла
  • Скорость течения зависит от сечения русла: в сужениях и на перепадах вода идёт быстрее
  • Водопад появляется на любом склоне круче Waterfall Angle, по желанию — в виде свободно падающей баллистической дуги
  • Пена на порогах, на водопадах и в котлах под ними
  • Косые гребни за камнями, кольца от удара и бурлящая пена там, где падает водопад

Digital Water

МОРЕ

  • Зыбь запекается по рельефу дна: замедляется и разворачивается на мелях, огибает острова, разбивается о пляжи и накатывает на песок
  • Стоячие волны перед скалами
  • Форма обрушивающейся волны берётся из текстуры профиля
  • Бесконечный режим: море доходит до горизонта вокруг каждой камеры

БРЫЗГИ НА GPU

  • Водопады: сгустки воды, капли, полосы пены на падающем потоке, купола белой воды, дымка в месте удара и дымка, оседающая вдоль водопада
  • Море: брызги, сорванные с обрушивающихся гребней, всплески и дымка там, где волны бьют в отвесные стены
  • Освещаются основным источником света с тенями, светятся, когда камера смотрит в сторону солнца
  • Анимируются и в Edit mode

Digital Water

ПОВЕРХНОСТЬ

  • Четыре волны Герстнера плюс мелкие детальные волны и ветер
  • Преломление; отражения из проб сцены и неба или из своей кубмапы
  • Каустика, подповерхностное рассеивание, солнечные блёстки, анизотропный зеркальный блик
  • Пена у кромки, пена на гребнях, барашки и полосы пены
  • Дополнительные источники света в Forward и Forward+, тени от основного света

Digital Water

ПОД ВОДОЙ

  • Окно Снелла, за его пределами — полное внутреннее отражение
  • Объёмный туман, рассеивание света, поглощение цвета по каналам и объёмная каустика
  • По желанию — верхняя граница тумана, которая повторяет волны
  • Несколько водных объёмов в одной сцене

МОКРАЯ ЗЕМЛЯ

  • Шейдер Terrain Lit с блоком Wet Ground: земля ниже линии намокания становится темнее, глянцевее и ровнее
  • Линия намокания следует за уровнем воды и высыхает, когда вода уходит
  • По желанию — трипланарное наложение для скал

РАБОТА В РЕДАКТОРЕ

  • GameObject > 3D Object > Water Body создаёт готовый объект воды там, куда смотрит камера Scene view
  • Все настройки хранятся в материале и компонентах
  • Инспектор материала со сворачиваемыми блоками. Настройки выключенных функций скрыты, а сами функции не попадают в скомпилированный шейдер
  • Инспектор предупреждает о недостающих настройках URP и сам добавляет Underwater Volume Feature в ваши рендереры
  • Облегчённый шейдер Lite для Shader Model 3.5. При переключении между шейдерами все настройки сохраняются
  • Готовые материалы для озёр, ручьёв, водопадов, луж и морей

Digital Water

В КОМПЛЕКТЕ

  • Шейдер воды (с тесселяцией и без) и облегчённый шейдер Lite
  • Компоненты Water Body, Water System, Water Splash, Sea Splash и Wet Ground
  • Renderer Feature Underwater Volume
  • Шейдер Wet Terrain Lit
  • Готовые материалы воды и Terrain Layers
  • 2 демо-сцены: озеро и реки с водопадом; бесконечное море
  • Документация

Digital Water

Возможности

КЛЮЧЕВЫЕ ВОЗМОЖНОСТИ

  • Unity 6000.3+, URP 17, RenderGraph
  • Один материал, четыре прохода: поверхность, нижняя сторона, подводный объём, высота
  • Каждая функция — локальный keyword шейдера. Выключенные функции вырезаются при компиляции
  • Материал совместим с SRP Batcher
  • Тесселяция по длине ребра на экране в пикселях (LOD 300), запасной сабшейдер без тесселяции (LOD 200)
  • Шейдер Lite: Shader Model 3.5, те же свойства, что у основного шейдера
  • Перспективные и ортографические камеры
  • UV в мировых координатах или из меша, маски в цвете вершин для пены, смещения и непрозрачности
  • Меш воды хранится в сцене, при желании его можно сохранить в ассет меша
  • Запекание моря: время прихода зыби считается методом fast marching по дну, результат хранится в картах зыби и берега, можно сохранить в ассет
  • Бесконечное море: CDLOD-квадродерево тайлов для каждой камеры, отсечение на CPU, отрисовка через инстансинг
  • Брызги: пулы частиц в кольцевом буфере на GPU, один compute dispatch и один draw call на пул на каждую камеру, до 262 144 частиц в пуле
  • Wet Ground: карта высот воды каждый кадр рендерится сверху, разрешение карты намокания от 64 до 4096
  • Подводный объём: растровый проход RenderGraph через Blitter, камеры превью и отражений пропускаются

Digital Water

Digital Water

ТРЕБОВАНИЯ

  • Unity 6000.3 или новее, URP 17 с RenderGraph
  • В URP-ассете включены Depth Texture и Opaque Texture
  • Шейдер воды: Shader Model 4.6 с тесселяцией, 4.5 без неё
  • Облегчённый шейдер Lite: Shader Model 3.5
  • Water Splash и Sea Splash: compute-шейдеры (DirectX 11/12, Vulkan, Metal, WebGPU)
  • Контроллер камеры в демо: пакет Input System

ОГРАНИЧЕНИЯ

  • Только URP, Built-in RP и HDRP не поддерживаются
  • Одно бесконечное море на сцену. Его тайлы нельзя выделить кликом в Scene view
  • Плавучести и динамической ряби от объектов пока нет (в планах)
  • Вода прозрачная и подчиняется стандартным правилам сортировки прозрачных объектов

Digital Water

Совместимость

Шейдеры поверхности нормально работают в Unity 2023 на URP, но скрипты под неё приходится переводить на более старый API.

Видео

Digital Water

https://www.youtube.com/watch?v=gSAqEj9LJnk

Страница в Asset Store: Digital Water