С 90 FPS до 230+. Маленький девлог об оптимизации игры на Unity 6 URP

Улучшения производительности

  • Перешли на Adaptive Probe Volume (APV) вместо источников света в реальном времени. Реалтайм-GI от солнца всё ещё работает.
  • Используем высокую плотность APV (0.4) для интерьеров и более низкую для окружения.
  • Вся внутренняя геометрия перенесена в отдельный Rendering Layer, чтобы тонкие стены рендерились корректнее.
  • Отключили Sky Direction в Sky Occlusion — это почти полностью убрало странные артефакты.
  • Убрали большинство настроек Probe Invalidity (оставили только в Post-Processing → APV Options).
  • Заменили point lights на spotlights.Светильники теперь делятся на два типа: запечённые APV point lights для основного света и realtime spotlights для теней от объектов.
  • Объединили множество материалов в атласные, чтобы сократить количество уникальных текстур.
  • Локальная покраска ассетов использует маски с покраской через оттенок на Custom Shader Graph.
  • Далёкие объекты больше не отбрасывают тени — визуально разницы почти нет, но FPS растёт заметно.
  • Создали отдельные URP-ассеты под каждый пресет качества. На Epic графика выглядит так же, а на слабых устройствах стало немного плавнее.
  • Даже интегрированная офисная видеокарта выдаёт ~20 FPS на низких настройках (поддерживать такое железо не планируем, просто проверили).
  • Убрали прозрачные спрайты фона, постепенно заменяем их на mesh-деревья.
С 90 FPS до 230+. Маленький девлог об оптимизации игры на Unity 6 URP

Улучшения визуала

  • Тени стали мягче, артефакты от APV на стенах полностью исчезли.
  • Убрали видимые швы на ландшафте.
  • Плотность травы увеличена в несколько раз без потери производительности.
  • Добавили запечённый свет вокруг окон, чтобы мебель естественнее реагировала на дневное освещение.
  • Заменили старый трюк с покраской материалов при взаимодействии на Outline-шейдер.
С 90 FPS до 230+. Маленький девлог об оптимизации игры на Unity 6 URP

Что ещё не реализовано и где можно подняться выше

  • Occlusion Culling пока выключен — скрытые объекты за преградами всё ещё рендерятся.
  • Трава работает на стандартном Unity-решении, планируем перейти на Nature Renderer 6 после решения конфликтов шейдеров.
  • Некоторые старые спрайты нужно заменить на лёгкие меши или карточки.
  • Планируем добавить несколько сценариев APV для разных времён суток.
С 90 FPS до 230+. Маленький девлог об оптимизации игры на Unity 6 URP

Дополнительные заметки

  • Игра кажется простой, но камера имеет большой радиус обзора и рисует огромное количество объектов.
  • Вращающаяся камера игрока увеличивает нагрузку.
  • Цикл день/ночь требует теней в реальном времени, поэтому полностью отказаться от realtime-света нельзя.
  • Скайбокс плавно меняет материалы на дневной и ночной.
  • Трава получает свет, но не отбрасывает тени.
  • Деревья получают свет и отбрасывают тени.
  • Используем шейдер ветра для листвы и стилизованный шейдер воды.
  • Полное запекание невозможно, так как мебель динамическая и может быть перемещена в любой момент в реальном времени.
С 90 FPS до 230+. Маленький девлог об оптимизации игры на Unity 6 URP

Ссылка на игру: Capybara Hot Tub

Мой сетап: GTX 3060 Ti 12 GB, DDR4 32 GB, Intel Core i5-11400F
Скриншоты в сторе устарели, пока нет времени обновить.

18
4
11 комментариев