С 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-деревья.
Улучшения визуала
- Тени стали мягче, артефакты от APV на стенах полностью исчезли.
- Убрали видимые швы на ландшафте.
- Плотность травы увеличена в несколько раз без потери производительности.
- Добавили запечённый свет вокруг окон, чтобы мебель естественнее реагировала на дневное освещение.
- Заменили старый трюк с покраской материалов при взаимодействии на Outline-шейдер.
Что ещё не реализовано и где можно подняться выше
- Occlusion Culling пока выключен — скрытые объекты за преградами всё ещё рендерятся.
- Трава работает на стандартном Unity-решении, планируем перейти на Nature Renderer 6 после решения конфликтов шейдеров.
- Некоторые старые спрайты нужно заменить на лёгкие меши или карточки.
- Планируем добавить несколько сценариев APV для разных времён суток.
Дополнительные заметки
- Игра кажется простой, но камера имеет большой радиус обзора и рисует огромное количество объектов.
- Вращающаяся камера игрока увеличивает нагрузку.
- Цикл день/ночь требует теней в реальном времени, поэтому полностью отказаться от realtime-света нельзя.
- Скайбокс плавно меняет материалы на дневной и ночной.
- Трава получает свет, но не отбрасывает тени.
- Деревья получают свет и отбрасывают тени.
- Используем шейдер ветра для листвы и стилизованный шейдер воды.
- Полное запекание невозможно, так как мебель динамическая и может быть перемещена в любой момент в реальном времени.
Ссылка на игру: Capybara Hot Tub
Мой сетап: GTX 3060 Ti 12 GB, DDR4 32 GB, Intel Core i5-11400F
Скриншоты в сторе устарели, пока нет времени обновить.
11 комментариев