Как устроен Soft Mask

Кто работал с UI в Unity, мог столкнутся с одной особенностью стандартного компонента Mask: он работает через stencil и потому не поддерживает прозрачность. Пиксель либо полностью виден, либо полностью маскирован. В некоторых случаях это не проблема, поскольку мы можем “прикрыть” маскированный элемент какой-нибудь рамкой:

Обратите внимание на пикселированные края картинки слева. Но иногда нам нужен плавный переход:

Добиться такого эффекта в Unity без сторонних компонентов или написания своих шейдеров невозможно. Именно этот недостаток стандартной маски и призван устранить мой ассет — Soft Mask.

Continue reading “Как устроен Soft Mask”

Реализация тумана войны (3/3)

В предыдущих частях мы уже, в общем-то, реализовали туман войны. Но вот представьте, что теперь захотелось добавить еще одну фичу — чтобы карта плавно уходила в темноту по краям карты. И вроде бы эта штука кажется чем-то похожей на туман войны, не так ли? Давайте разберемся.

Continue reading “Реализация тумана войны (3/3)”

Реализация тумана войны (2/3)

Итак, мы реализовали обновление карты видимости и применение тумана войны через .cginc, вставленный во все шейдеры проекта. Но пока что в самом простом виде, что дает некрасивые пикселированные границы видимых областей. В этой части мы устраним пиксели а также реализуем сокрытие вражеских юнитов туманом войны.

Continue reading “Реализация тумана войны (2/3)”

Реализация тумана войны (1/3)

Однажды для одного проекта, над которым я работал, понадобилось реализовать туман войны. Казалось бы, это такая популярная фича, что для нее в Asset Store непременно найдется с десяток решений. На деле их нашлось всего несколько, а доверие вызвало лишь одно из них. Основная его фича – расчет полей видимостей с учетом перекрытий, вроде как в Heroes of the Storm или других MOBA’х. Нам же нужен был всего лишь старый добрый туман войны, как в старых RTS’ках, когда карта раскрывается кружочками вокруг юнитов. Это была одна из причин, почему я в итоге отказался от использования этого ассета и решил делать свою реализацию. О том, как я это делал, собственно, и хочу рассказать.

Continue reading “Реализация тумана войны (1/3)”