Шейдер капель воды выглядит обманчиво простой задачей: прозрачные шарики на прозрачной поверхности. На практике именно здесь чаще всего получается пластиковая плёнка вместо воды, а на крупном плане разваливается всё, что нормально смотрелось издалека.
Дальше вы увидите, как устроен материал капли физически, чем отличается подход для дальнего и крупного плана, как получить стекающие следы и что делать с производительностью.
Почему капля выглядит пластиковой
Три причины, и все они про физику, а не про настройки шейдера.
Нет преломления. Вода искажает то, что за ней. Если капля просто полупрозрачная, мозг сразу считывает подделку.
Неверный показатель преломления. У воды он около одной целой тридцати трёх, у стекла около полутора. Значение по умолчанию в шейдере обычно стеклянное, и капля выглядит как стеклянная бусина.
Капля не смачивает поверхность. Настоящая капля имеет тёмную кайму по краю контакта со стеклом и слегка растекается. Идеальная полусфера выглядит нарисованной.
Два принципиально разных подхода
Выбор определяется тем, насколько крупно капли в кадре.
Геометрия. Капли это настоящие объекты на поверхности. Дают правильное преломление, правильные блики, честные тени. Дороже по памяти и времени.
Карта нормалей. Капли нарисованы в текстуре, поверхность остаётся плоской. Дёшево, работает в реальном времени, но на крупном плане видно, что рельефа нет: капля не отбрасывает тень и не искажает фон.
Практическое правило: если капля в кадре занимает больше десятка пикселей, нужна геометрия. Если меньше, достаточно карты.
Материал капли: что ставить
Основа это прозрачный материал с преломлением.
Показатель преломления один и тридцать три. Это единственное значение, которое нельзя брать на глаз.
Шероховатость близкая к нулю. Вода гладкая, любое размытие делает её похожей на матовый пластик.
Пропускание полное, цвет прозрачный или с едва заметным оттенком.
Отдельный момент: толщина. Если капля смоделирована как поверхность без объёма, преломление не сработает правильно. Нужен замкнутый объём, пусть и тонкий.
Стекло под каплями
Ошибка, которая портит результат независимо от качества капель: стекло и капля с одинаковыми настройками.
У стекла показатель преломления около полутора, у воды одна целая тридцать три. Когда капля лежит на стекле, свет проходит через оба, и разница показателей создаёт видимую границу.
Если задать одинаковые значения, граница исчезнет, и капли будут выглядеть вплавленными в стекло.
Второй момент: толщина самого стекла. Плоскость нулевой толщины ведёт себя иначе, чем настоящее стекло, и на крупном плане это заметно.
Как расставить капли
Вручную это работает только для нескольких штук в кадре.
Для остального нужна процедурная расстановка: система распределяет капли по поверхности с управляемой плотностью и случайным размером.
Что обязательно делать вариативным: размер, слегка поворот, степень сплюснутости. Одинаковые капли выдают себя мгновенно.
Полезный приём: неравномерная плотность. Настоящие капли собираются в группы, а не рассеиваются равномерно. Достаточно умножить плотность на шумовую текстуру, чтобы появились сгущения и проплешины.
Форма капли
Полусфера это самый быстрый способ получить неправдоподобный результат.
На вертикальном стекле капля вытянута вниз под собственным весом: сверху сужается, снизу шире и тяжелее.
Маленькие капли ближе к полусфере, крупные заметно деформированы. Эта зависимость от размера сама по себе добавляет достоверности.
У основания есть переход, где капля смачивает поверхность. Резкая граница между каплей и стеклом выглядит как наклейка.
Стекающие следы
Именно они превращают набор капель в дождь на стекле.
Физически след это дорожка смоченной поверхности, оставленная скатившейся каплей. Она тоньше самой капли, но так же преломляет свет.
Два способа сделать. Первый: смоделировать дорожки геометрией вместе с каплями. Точнее, но трудоёмко.
Второй и практичный: добавить в материал стекла маску, где в области следов меняется шероховатость и слегка нормаль. Стекло в этих местах становится другим, и глаз читает это как влажность.
Маску удобно рисовать вертикальными вытянутыми пятнами с сужением кверху, повторяя траекторию стекания.
Свет: без него капли не читаются
Капли видны не сами по себе, а за счёт того, что делают со светом.
Нужен яркий источник позади или сбоку, чтобы в каплях появились блики и проступило преломление. При плоском фронтальном освещении капли исчезают.
Второй обязательный элемент это контрастный фон. Капля показывает то, что за ней, в перевёрнутом и искажённом виде. Если за стеклом ровная серая стена, показывать нечего.
Классическая постановка для эффектного кадра: яркие пятна света за стеклом, фон с контрастом, ключевой источник сбоку.
Производительность
Капли это прозрачность плюс преломление, а это одна из самых дорогих комбинаций в рендере.
Что дорожает: число отскоков луча. Каждая капля это как минимум два пересечения поверхности, а если их сотни, лучу приходится проходить сквозь множество слоёв.
Практические меры. Ограничить число отскоков прозрачности разумной величиной: разница между четырьмя и шестнадцатью на каплях почти не видна, а время отличается кратно.
Убрать капли из отражений и теней там, где они не нужны: часто это экономит больше, чем всё остальное.
Считать капли отдельным слоем и собирать в композиторе, если сцена тяжёлая.
Капли на других поверхностях
Стекло самый частый случай, но приёмы переносятся не полностью.
На металле и краске. Преломление работать не будет, потому что за поверхностью ничего нет. Капля здесь читается за счёт блика и искажённого отражения окружения. Шероховатость капли при этом должна резко отличаться от шероховатости поверхности, иначе она сольётся.
На матовом пластике. Самый выигрышный случай: контраст между матовой поверхностью и зеркальной каплей делает её заметной без всяких ухищрений.
На ткани и пористых поверхностях. Вода впитывается, и капля как объект существует недолго. Правдоподобнее показывать потемневшие мокрые пятна, а не капли: это делается затемнением цвета и снижением шероховатости в области пятна.
На листве и органике. Здесь капли крупные и сильно деформированные, собираются в углублениях и по краям. Равномерное распределение выдаёт подделку сильнее всего.
Общее правило для всех поверхностей: мокрое всегда темнее и глаже сухого. Даже без единой капли одно это изменение читается как влажность.
Для реального времени
В игровом движке геометрические капли с преломлением почти всегда недоступны по бюджету.
Рабочая схема: карта нормалей с каплями плюс отдельная карта шероховатости для следов. Преломление имитируется смещением экранных координат, а не настоящим просчётом.
Выглядит это хуже честного рендера, но на движущемся изображении разница почти незаметна, а стоимость отличается на порядок.
Анимация делается сдвигом текстуры и переключением масок, а не симуляцией.
Конденсат: другая задача
Мелкая роса на холодном стекле устроена иначе, чем дождевые капли, и путать их не стоит.
Конденсат это тысячи очень мелких капель, каждая размером в доли миллиметра. Моделировать их геометрией бессмысленно: ни одна не будет различима, а память и время уйдут.
Правильный подход: шероховатость. Запотевшее стекло это стекло с высокой шероховатостью, рассеивающее свет. Достаточно поднять этот параметр и добавить лёгкую неравномерность шумом.
Интересный эффект получается на границе: там, где человек провёл пальцем или где стекло нагрелось, конденсат исчезает. Это делается маской, и именно она создаёт узнаваемую картинку.
Комбинация тоже работает: запотевшее стекло как основа, поверх несколько крупных стекающих капель геометрией. Так делают в кино, и это дешевле полной геометрии.
Как делать по шагам
Последовательность, которая экономит время.
Схема
- Стекло: толщина, показатель преломления, базовая шероховатостьПроверить, что оно выглядит стеклом без капель.
- Свет и фонБез них оценить капли невозможно, и подбирать материал в плоском освещении бессмысленно.
- Несколько тестовых капель крупноДовести материал на них.
- Расстановка по поверхности с вариативностью
- Следы стекания и мелкая доводка
Общие принципы построения материалов через узлы разобраны в материале про создание PBR-материалов, а постановка света для реалистичного кадра в гайде про реалистичный рендер в Blender.
Частые вопросы
Почему капли чёрные?
Почти всегда не хватает отскоков прозрачности. Луч не успевает пройти сквозь все слои и возвращает чёрный. Увеличьте лимит прозрачности в настройках рендера.
Можно ли сделать капли симуляцией жидкости?
Технически да, но это избыточно дорого для статичного кадра. Симуляция оправдана, когда нужно реальное стекание в анимации, и даже тогда чаще делают гибрид.
Как сделать капли разного размера правдоподобно?
Не просто масштабировать: крупные капли сильнее деформированы весом. Задайте зависимость сплюснутости от размера, и распределение сразу станет достовернее.
Нужна ли каплям отдельная карта нормалей?
Если капли геометрические, нет. Если нарисованные, карта нормалей и есть основной инструмент, и от её качества зависит всё.
Почему в реальном времени капли выглядят плоскими?
Потому что там нет настоящего преломления, а есть имитация смещением. На неподвижном крупном плане это видно всегда, и единственное решение это не показывать капли крупно.
Начните с одной крупной капли и доведите её до убедительности. Когда работает одна, остальные раскидываются по поверхности за минуты.
