- За
- Против
Про проблему я знаю давно, но игнорировал, потому что если бы начал писать про каждую ошибку именно в плане игры/движка, то просто заспамил бы всю предложку. Во время работы над одним проектом столкнулся с этим напрямую и всё-таки решился принять меры.
В нашей замечательной игре на локациях всегда существует полигон water_3d. Он бесконечного размера и расположен на уровне моря локации, создавая таким образом море, реки (о них лучше не вспоминать), бухты и гавани.
Но бывает, что на локации вода (высокогорное озеро, дамба) должна находиться выше уровня моря и при этом не заливать пол-карты (полигон-то бесконечный).
Поэтому картодел (сохрани его душу) использует другой полигон — water_transparent, который уже не бесконечный и которому можно задать форму.
Вот только по необъяснимым причинам (лень) вода использует другой шейдер, в результате чего можно наблюдать следующую картину:
Лень корпеть над легендой, так что вкратце:
- Вода в хранилище создана с помощью water_transparent, и она непрозрачная, матовая, игнорирует окружение, не отбрасывает и не принимает тени, не использует симуляцию волн (просто перемещает текстуру по UV-координатам * время), не поддерживает эффекты, возникающие при близком пролёте истребителя или вертолёта, а при использовании, например, в пользовательском ангаре не проигрывает анимацию волн — то есть статическая.
- Вода снизу создана water_3d и является полной противоположностью затычке под названием water_transparent.
Можно вспомнить карты Кубань, Прадеш, Италию и другие.
Почему не баг-репорт? Та же логика, что и с травой на авиационных локациях: если разработчика во время разработки и тестирования всё устраивает (а проглядеть такое невозможно), значит багом не является и считается фичей.
Значит оформляем в предложение: переработать эти поверхности, чтобы они использовали рабочую версию шейдера water_3d.
2D-текстурка воды с парой шейдеров времён «Крылатых Хищников» больше не годится. Тем более что для разработчика, имеющего прямой доступ к исходникам Дагора, проблем это не составит.
Для начала можно попробовать отсекать обычный water_3d с помощью маски.
