Короткий полезный разбор от Рубена с TheGameDev.Guru про те самые фризы на секунду в современном Unity, когда игрок заходит в новую зону, меняет графику или надевает косметику, и игра замирает ровно настолько, чтобы он пошёл за рефандом.
Старый рецепт «соберём шейдеры и прогреем заранее» на Vulkan, DX12 и Metal не работает. Теперь прогреваешь не шейдер, а PSO т.е. шейдер плюс весь стейт рендера вокруг: MSAA, формат таргета, blend, depth, вариант материала, уровень качества. Поменял одну настройку, и нужен новый PSO, которого в твоём трейсе не было. Отсюда и фриз.
Unity 6.5 добавил cache miss collection: движок ловит непрогретые стейты и даёт доклеить их в кеш. Удобно, но штука лишь сообщает, что ты пропустил, уже постфактум. Корень всё равно в покрытии — трейсить надо реальные геймплейные маршруты и настройки игроков, а не чистое демо.
Подробнее в самой статье: https://thegamedev.guru/all/your-pso-cache-is-only-as-good-as-your-playthrough/
@make_game
Post #1913
2.1K