Nanite не сделает ваш меш «бесплатным». Но многие думают именно так.
«Теперь можно не париться про поликаунт» — эту фразу я слышу регулярно. И каждый раз за ней следует один и тот же сценарий: меш на 5 млн полигонов, красная зона в Overdraw, просадка FPS — и полное непонимание, почему «революционный движок» тормозит.
Давайте разберёмся, где Nanite реально спасает, а где тихо подводит в реалиях UE 5.7.
Где Nanite — ваш лучший друг
- Архитектура и окружение. Фасады, каменная кладка, детализированный пропс — здесь Nanite идеален. Он избавляет от недель работы над ручными LOD-ами.
- Фотограмметрия. Сканы теперь можно импортировать почти напрямую. Nanite сам эффективно управляет детализацией в зависимости от дистанции.
- Скорость итераций. Мы тратим меньше времени на рутину и больше — на качество. Это главный выигрыш в пайплайне.
Где Nanite тихо подводит (или «ловушки» для новичка)
1. Overshading — ловушка №1
Nanite рендерит геометрию кластерами. Если ваши треугольники мельче одного пикселя на экране — GPU всё равно шейдит весь кластер целиком. Микро-треугольники от чрезмерного сабдива незаметно съедают производительность шейдинга.
Nanite рендерит геометрию кластерами. Если ваши треугольники мельче одного пикселя на экране — GPU всё равно шейдит весь кластер целиком. Микро-треугольники от чрезмерного сабдива незаметно съедают производительность шейдинга.
- Как проверить: Nanite Visualization → Overdraw. Красные и белые зоны — ваша главная проблема.
2. World Position Offset (WPO)
В актуальных версиях движка Nanite поддерживает WPO, но помните: это не бесплатно. Включение Programmable Rasterizer для работы ветра на листве или деформаций — это тяжелая операция. Если не настраивать дистанцию отсечения (NanitePixelProgrammableDistance), можно легко убить кадр.
В актуальных версиях движка Nanite поддерживает WPO, но помните: это не бесплатно. Включение Programmable Rasterizer для работы ветра на листве или деформаций — это тяжелая операция. Если не настраивать дистанцию отсечения (NanitePixelProgrammableDistance), можно легко убить кадр.
3. Память и стриминг
Nanite умный, но он не сжимает данные до нуля. «Сырой» меш с мусорной топологией занимает больше места на диске и дольше стримится, чем чистый меш с той же визуальной детализацией. Лишний вес — это лишние лаги при загрузке уровней.
Nanite умный, но он не сжимает данные до нуля. «Сырой» меш с мусорной топологией занимает больше места на диске и дольше стримится, чем чистый меш с той же визуальной детализацией. Лишний вес — это лишние лаги при загрузке уровней.
4. Draw Calls всё ещё важны
Nanite решает проблему треугольников, но не материалов. Один объект с пятью материальными слотами — это всё ещё пять вызовов отрисовки. Для оптимизации это критично.
Nanite решает проблему треугольников, но не материалов. Один объект с пятью материальными слотами — это всё ещё пять вызовов отрисовки. Для оптимизации это критично.
Быстрый чек перед сном (или коммитом):
- Включили Overdraw visualization? Нет ли там «ядерного взрыва» из микро-треугольников?
- Используете WPO? Проверьте, не включен ли он на объектах, которые не двигаются.
- Сколько Material Slots? Больше двух-трёх на объект — повод задуматься об атласах или объединении.
- Для мелких объектов в ближней зоне (например, кнопки на пульте) Nanite почти ничего не даёт, а память ест.
Итог
Nanite — это революция контент-пайплайна, но не повод забывать про топологию. Он решает проблему «слишком много треугольников для рендера», но он не решает проблему «плохо устроенная геометрия».
Знать эту разницу — и есть работа Tech Artist-а.
Сталкивались с тем, что Nanite в 5.7 ведёт себя не так, как ожидали? Пишите в комментариях — разберём ваши кейсы.