Как обойти ограничение Unity на Height Blending у терреина с 4+ слоями
В этой статье я покажу, как обойти ограничение Unity на 4 слоя при height-based blending на терраине. Модификация включает height blending для первых 4 слоёв независимо от общего количества слоёв (8, 12, 16+).
Важно: Height-based blending будет работать только для первых 4 слоёв; дополнительные слои будут использовать стандартное альфа-смешение. Этот гибридный подход даёт лучшее от обоих миров.
Решение реализовано в Unity 6 (URP). Поскольку я использовал исходники Terrain Lit Shader от Unity, совместимость с версиями ниже Unity 6 или HDRP зависит от того, были ли изменены оригинальные шейдеры терраина в тех версиях.
В любом случае, можно посмотреть на мои файлы и изменения, чтобы адаптировать решение под свою версию.
Это решение я сейчас использую в своей игре
Tiny Delivery
Tiny Delivery
Что такое Height-Based Blending вообще?
Если коротко: каждый слой терраина может иметь Mask Map — специальную текстуру с дополнительными данными материала:
- R — Metallic
- G — Ambient Occlusion
- B — Height — вот это нам и нужно
- A — Smoothness
Height blending использует данные высоты из B-канала, чтобы переходы между слоями выглядели не как альфа-смешение, а как что-то реальное — трава прорастает сквозь гравий, земля выглядывает из-под снега и т.д.
unity
indie
gamedev
геймдев
инди
coding
shader