Когда мы заходим в Atomic Heart, The Last of Us Part I или S.T.A.L.K.E.R. 2: Heart of Chornobyl, игра просит нас подождать компиляции шейдеров. На одних компьютерах это длится 5 минут, а на других от получаса до нескольких часов. В большинстве игр компиляции шейдеров в меню нет, и этот процесс запускается прямо во время геймплея, что снижает FPS и становится причиной постоянных фризов и статтеров.
Так что же такое шейдеры? Как они влияют на производительность и почему геймеры должны ждать компиляции прямо в главном меню? Сегодня мы ответим на эти вопросы.
Что такое шейдеры
Шейдеры – это маленькие программы, то есть короткие строчки кода. Они сообщают видеокарте, как правильно отрисовывать текстуры, 3D-объекты и спецэффекты в игре.
Шейдеры делятся на несколько типов:
Пиксельные и лучевые. Используются для правильного расчета освещения, затенения, прозрачности, взрывов, огня и других физических эффектов.
Вычислительные шейдеры. Используются для ускорения рендеринга игры и сложных математических расчетов.
Вершинные, геометрические, поверхностные и доменные. Используются для формирования границ 3D-объектов.
Как шейдеры влияют на FPS в играх
Для создания красивой картинки в современных играх используются тысячи шейдеров. Многие из них простые и почти не влияют на производительность. Например, к ним относятся шейдеры, которые накладывают текстуры на 3D-модели. По этой причине «качество текстур» в графических настройках игр почти не влияет на FPS (только в том случае, если игре хватает оперативной и видеопамяти геймерского компьютера).
Однако есть очень сложные шейдеры, которые сильно влияют на производительность. Например, лучевые шейдеры. Они работают с большим объемом данных и используются для правильной отрисовки эффектов трассировки лучей. Это одна из причин, почему включение RTX сильно снижает FPS в играх.
Шейдеры не только уменьшают кадровую частоту. Они также становятся причиной фризов и статтеров (коротких микрозависаний). Если со снижением FPS еще можно смирится, то постоянные зависания очень сильно портят игровой процесс.
Как шейдеры влияют на фризы и статтеры в играх
Шейдеры пишутся на высокоуровневом языке программирования. Видеокарты его не понимают. Они могут работать только с двоичным машинным кодом. Чтобы перевести шейдеры в понятный для видеокарт язык, их нужно скомпилировать.
Этим занимается центральный процессор. Когда ему нужно скомпилировать один шейдер или несколько, то проблем не возникает. Но в современных играх используются тысячи шейдеров. Когда их нужно мгновенно подгружать десятками и сотнями, даже самые мощные процессоры могут не справляться. Тогда и появляются фризы.
Как разработчики оптимизируют компиляцию шейдеров
Разработчики знают о том, что шейдеры негативно влияют на производительность. Есть три способа для решения этой проблемы:
Компиляция всех шейдеров при первом запуске игры. В этом случае геймерам приходится ждать в главном меню, когда игра скомпилирует все шейдеры.
Подгрузка и компиляция шейдеров во время игрового процесса. В этом случае игра может фризить, а FPS снижаться из-за постоянных компиляций.
Компиляция части шейдеров при первом запуске игры и дальнейшая их подгрузка во время игрового процесса. Это самый распространенный вариант, которым пользуются большинство разработчиков.
Влияние шейдеров на производительность очень сильно зависит от опыта, навыков и квалификации программистов. Хорошие и умелые специалисты могут предугадывать, какие шейдеры будут нужны и когда. Например, если программисты знают, что в конкретной локации часть шейдеров не нужна, то они настраивают игру так, чтобы ненужные шейдеры просто не компилировались. Это позволяет снизить нагрузку с центрального процессора и избавится от фризов и статтеров.
К сожалению, не все программисты обладают хорошей квалификацией, и мы получаем такие игры, как The Callisto Protocol или S.T.A.L.K.E.R. 2: Heart of Chornobyl. Эти проекты работают нестабильно даже на топовых ПК.
Почему шейдеры не могут компилироваться во время установки игры
На консолях Xbox и PlayStation проблем с шейдерами нет, так как они компилируются во время установки игры. На ПК это невозможно. Шейдеры компилируются для каждой конфигурации ПК отдельно. Если вы поменяете процессор, видеокарту или оперативную память, игра будет заново компилировать все шейдеры. Учитывая большое разнообразие компьютерных комплектующих, разработчики просто не могут заранее скомпилировать шейдеры для всех возможных конфигураций ПК.
Как можно решить проблему с фризами из-за компиляции
Решать проблему с фризами из-за компиляции шейдеров должны разработчики, а мы, простые геймеры, которые платим за игры, должны получать отполированные продукты. Однако индустрия не идеальна. Есть несколько способов, которые помогут сократить количество фризов из-за компиляции шейдеров:
Установка игры на SSD. Откажитесь от жестких дисков для установки современных игр. Их скорости не хватает, чтобы быстро подгружать большое количество маленьких файлов. Это поможет решить проблему с фризами и долгими загрузками.
Использование более мощного процессора. Компиляцией шейдеров занимается процессор. Если поставить в ПК более мощную модель, то компиляция будет происходить быстрее, что снизит количество фризов и просадок FPS.
Закрытие всех программ перед запуском игры. В этом случае все ресурсы процессора будут направлены на обработку игры, что освободит дополнительную мощность для компиляции шейдеров. Также рекомендуется оптимизировать Windows.
Ограничение частоты кадров в настройках игры. Если ограничить максимальный FPS, то процессор не будет работать на полную мощность. Освободившейся производительности хватит для быстрой компиляции шейдеров и устранения фризов.
Перечисленные способы не решат проблему полностью, но они однозначно помогут сократить количество фризов и просадок FPS.
Итоги
Кратко подведем итоги:
Шейдер – это маленькая программа, которая сообщает видеокарте, как правильно отрисовать графический эффект в игре.
В современных играх используются тысячи шейдеров, из-за чего они сильно влияют на производительность и становятся причиной фризов.
Не все разработчики умеют эффективно распоряжаться библиотекой шейдеров, из-за чего одни игры работают хорошо, а другие фризят даже на топовых ПК.
Частично решить проблему с фризами из-за компиляции шейдеров можно с помощью:
установки игры на SSD;
установки более мощного процессора в ПК;
закрытия всех сторонних программ перед запуском игры;
ограничения максимальной частоты кадров в настройках.
Компиляция шейдеров на компьютерах HYPERPC
Мы знаем, что компиляция шейдеров негативно влияет на производительность в современных играх. Для решения этой проблемы мы используем в своих ПК:
скоростные SSD накопители с протоколом передачи данных NVMe;
высокочастотные модули оперативной памяти стандарта DDR4 и DDR5;
многоядерные центральные процессоры Intel и AMD последних поколений.
Эти комплектующие значительно снижают количество фризов и просадок FPS в играх из-за компиляции шейдеров, гарантируя плавный и стабильный геймплей.
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Полученные показатели FPS являются усредненными и служат для демонстрации относительной производительности систем на максимальных настройках графики.
Узнать больше
Каждый компьютер HYPERPC — это результат 15 лет опыта и экспертизы. Наши эксперты точно знают, каким должен быть игровой компьютер, рабочая станция или сервер.
Для начала работы нам достаточно поговорить. Расскажите о своих задачах, сроках и бюджете, и мы предложим лучшее решение.