Ты запускаешь игру, в которую давно не играл, и первые десять минут ужасны. Каждое новое оружие, каждый новый эффект, первое появление конкретного противника — рывок. Потом всё устаканивается, и ко второму вечеру игра идёт плавно. Это сделало не то, что ты поменял. Это сделало время.
Или другая версия: с игрой всё было в порядке, ты обновил драйвер видеокарты — и весь первый час снова рваный.
И то и другое — один и тот же механизм, и это одна из немногих причин фризов, которая по-настоящему нормальна: её выдаёт здоровая машина с исправным софтом.
Почему эта работа обязана происходить на твоей машине
Шейдер — это маленькая программа, которая выполняется на видеокарте. Разработчик игры пишет её на высокоуровневом языке и компилирует, но лишь наполовину — до промежуточной формы, которая описывает, что программа делает, а не то, как это должен делать конкретный графический чип.
Машинный код, который твоя видеокарта на самом деле исполняет, заранее получить нельзя: он зависит от двух вещей, которых у разработчика нет, — от точной архитектуры твоей видеокарты и от точной версии твоего драйвера. Промежуточную форму в инструкции для кремния в твоей машине превращает собственный компилятор драйвера, и эта компиляция идёт на твоём процессоре — в тот момент, когда шейдер понадобился игре.
Поэтому, когда сцене впервые нужна конкретная комбинация шейдера, состояния отрисовки и раскладки вершин, что-то приходится компилировать. Если игра просит об этом посреди кадра и ждёт, кадр опаздывает. Этот опоздавший кадр и есть тот рывок, который ты почувствовал.
Результат записывается на диск, в кэш шейдеров. Когда то же самое появляется во второй раз, скомпилированный код читается из кэша, а не собирается заново, — именно поэтому по ходу игры становится лучше и поэтому вторая сессия проходит нормально.
Что отбрасывает тебя в начало
Кэш действителен только для того драйвера и того железа, которые его собрали. Всё из этого списка обесценивает его целиком или частично, и первый час игры снова рваный:
- Обновление драйвера видеокарты. Новый компилятор, новый результат; старым записям доверять нельзя, поэтому они уходят.
- Обновление игры. Изменённые шейдеры — это новые шейдеры.
- Другая видеокарта, включая смену той карты, на которой запускается игра.
- Программа очистки, которая его удалила. Собственная очистка диска в Windows перечисляет кэш шейдеров DirectX среди категорий временных файлов, которые она умеет удалять, а сторонние чистильщики забирают его регулярно. Контроль памяти — это та настройка Windows, которая запускает такую очистку по расписанию, так что стоит проверить, какие категории ты разрешил ей удалять.
- Кэш упёрся в свой предел размера и вытесняет старые записи, освобождая место.
Ничто из этого не является неисправностью. Это цена того, что кэш остаётся верным, а не устаревшим.
Как понять, что у тебя именно это
У компиляции шейдеров узнаваемый почерк, и ни на что другое из списка причин фризов она не похожа:
- Оно сходит на нет. Это определяющий признак. Если на третьем часу фризит так же, как на третьей минуте, — это не оно.
- Оно привязано к новизне. Первый вид оружия, области, погодного эффекта, конкретного противника. Второй проход по тому же коридору чистый.
- Оно не зависит ни от температуры, ни от длительности сессии. Проблемы с нагревом становятся хуже, чем дольше ты играешь; это — лучше.
- Оно возвращается по расписанию, которое ты можешь назвать — после обновления драйвера, после патча, после очистки, — а не случайно.
- Занята не видеокарта. Компиляция — работа процессора. Видеокарта, сидящая заметно ниже полной загрузки во время этих рывков, здесь ожидаема и не является свидетельством отдельной проблемы, описанной в Внезапные просадки FPS в играх.
Если эти пять пунктов твой симптом не описывают, вернись к общему списку в Почему игры фризят на Windows 11: тамошние причины сами по себе не сходят на нет.
Что с этим делать
В основном — дать этому случиться. Но по краям есть и настоящий выбор.
Не удаляй кэш шейдеров в качестве решения. Это единственный совет на этой странице, который стоит прочитать дважды. Чистку кэша прописывают как лекарство от фризов постоянно, а на деле она гарантирует, что ты заплатишь полную цену компиляции заново, с нуля. Это законный шаг диагностики при искажениях картинки после смены драйвера. И это противоположность решению для производительности.
Пользуйся собственным шагом предкомпиляции игры, если он у неё есть, и не пропускай его. Игра, которая перед меню две минуты держит экран «компиляция шейдеров», делает ровно эту работу заранее — там, где она не стоит тебе ничего, кроме ожидания.
После обновления драйвера оставь машину включённой на какое-то время. Некоторые драйверы пересобирают шейдеры DirectX 12, пока система простаивает, — как раз чтобы потом среда исполнения делала это меньше. Помогает это только в том случае, если машине достаётся время простоя.
Держи игру и её кэш на SSD и вне синхронизируемой папки. Облачный клиент следит за каждой записью, а игра пишет свой кэш шейдеров постоянно — каждая запись превращается в работу драйвера-фильтра плюс отправку по тому же соединению, которым пользуется твой матч.
Не измеряй внутри этого окна. Запись, снятая в первые минуты после обновления драйвера, измеряет компилятор, а не драйвер. Как читать результаты бенчмарка разбирает правила сравнения; так легко случайно нарушить первое из них.
Что об этом говорит сканер
Сканер фризов проверяет, не чистили ли кэш шейдеров недавно, и, найдя такое, говорит то же, что и эта страница: игра докомпилирует удалённый кэш по ходу дела, фризы в начале сессии нормальны и сходят на нет сами, а бенчмарк запускать не стоит, пока это окно не закончится.
Это намеренно подаётся не как неисправность, которую надо чинить. Чинить нечего — есть цена, которую платят один раз, и самое честное, что может сделать инструмент, — сказать тебе, что ты сейчас внутри неё, чтобы ты не потратил вечер на обвинение какой-нибудь настройки.
Где это перестаёт быть нормой
Фризы компиляции, которые никогда не сходят на нет, — уже другая проблема: кэш не сохраняется. Проверь, что диск не заполнен, что кэш не стирает запланированная очистка между сессиями и что папка игры не лежит там, где её постоянно чистит облачный клиент или предел размера.
А если прогон неровный на всём протяжении, а не только в начале, то смотреть надо Высокий средний FPS, но плохие 1% low: это проблема события, а не прогрева.
Похожие статьи
- Почему игры фризят на Windows 11
- Внезапные просадки FPS в играх
- Высокий средний FPS, но плохие 1% low
- Как читать результаты бенчмарка
Играешь в CS2? Какие параметры запуска ещё что-то делают и где в меню видео на самом деле лежат кадры: Как повысить FPS в CS2 и откуда берутся микрофризы: чек-лист по замерам
Эта страница помогла?
Чего не хватило или что не сработало? Мы читаем каждый такой ответ.
Если эта страница не решила проблему, напиши нам — скажи, какую статью ты читал, и мы её исправим.