Здравствуйте, делаю RTS на Unity3D, дошло дело до Тумана Войны. Пошарив в интернете увидел много, как на мой взгляд, "быдлокодерских" вариантов реализации. Из них хотелось бы выделить боле-мение достойные:
1. Берем текстуру, размещаем выше земли и делаем отверстия(alpha) в нужных местах при помощи шейдера.
2. Заполнить всю карту триггерами и в зависимости от пересечения колайдерами наносить туман.
3. Берем две текстуры, тумана и карту высот, размещаем выше земли и делаем отверстия в нужных местах с учетом карты высот.
Первый и третий способ меня устраивает по своей реализации, но не хватает функционала... Например, если стоит "дерево", то туман должен исчезать только между юнитом и деревом, но не за ним(деревом). В третьем способе можно динамически наносить/удалять "деревья" с карты высот, но не будет ли это требовательно к ресурсам? Насколько я понимаю, нужно будет перебирать все точки текстуры между позицией юнита и текущем пикселем в поиске преграды, а юнитов может быть много и смотреть они тоже могут далеко...
Второй меня устраивает по функционалу, но не реализацией... Тот же пример с деревом, чтобы учесть эту ситуацию можно пустить луч к триггеру, если он дошел к нему, то открываем туман, если нет то ничего не меняем. Если юнитов будет много, то всё это превратится в ад из триггеров, колайдеров и лучей.
Сейчас Я больше склоняюсь к модернизации первого или третьего способа.
Есть ли еще какие нибуть приличные реализации?
UPD. Вот схемка для пояснения ситуации с деревом.