Новая бесплатная утилита с открытым исходным кодом под названием SCSKiller (сокращение от Shader Compilation Stutter Killer) нацелена на решение одной из самых насущных проблем современных ПК-игр: заиканий при компиляции шейдеров/объектов состояния конвейера (PSO).
Разработанная BlueHeisenberg, SCSKiller по сути пытается сделать то, что многие ПК-игры до сих пор не могут сделать должным образом сами. Программа сканирует шейдеры, поставляемые с игрой, определяет конвейеры, которые, скорее всего, будут построены, и компилирует их в кеш шейдеров драйвера видеокарты перед запуском игры. Теоретически это означает, что драйверу не придется останавливаться и компилировать эти конвейеры при первом появлении эффекта во время игрового процесса, что должно устранить заикания, связанные с компиляцией PSO «на лету».

В настоящее время утилита поддерживает видеокарты NVIDIA и AMD (видеокарты Intel, к сожалению, на момент написания статьи еще не поддерживаются) под управлением DirectX 12, а также игры на DirectX 11 на оборудовании NVIDIA. Она может автоматически обнаруживать игры, установленные через Steam, Epic Games Store, EA App, GOG, Ubisoft Connect, приложение XBOX PC и Battle.net. Дополнительный рекордер также может захватывать конвейеры, которые невозможно определить напрямую из файлов игры, после чего SCSKiller может скомпилировать их для последующих сессий.
Тестирование разработчика уже показывает впечатляющие результаты. В FINAL FANTASY VII Rebirth на RTX 5090 было зафиксировано 19 сбоев компиляции шейдеров продолжительностью 20 мс или более при холодном кеше, по сравнению с нулем после запуска SCSKiller. В Hogwarts Legacy количество таких сбоев сократилось с 1014 до 87, а в Star Wars Jedi: Survivor — с огромных 9038 до всего лишь 11.

Мы также самостоятельно протестировали SCSKiller с игрой FINAL FANTASY VII Rebirth от SQUARE ENIX, и результаты были немедленно заметны. Встроенный этап компиляции шейдеров в игре относительно короткий и явно не предкомпилирует все, что встречается во время реального игрового процесса. Тем временем SCSKiller сгенерировал около 3 ГБ бинарных файлов NVIDIA PSO для игры.
После завершения этого процесса заикания при компиляции шейдеров, которые обычно портят Rebirth, были практически устранены в нашем тестировании. Разница была особенно заметна при перемещении по областям и первом столкновении с эффектами на том, что в противном случае было бы холодным кешем шейдеров.

Однако есть важное ограничение: SCSKiller решает только проблему компиляции шейдеров. Он не может устранить заикания, связанные с перемещением, потоковой передачей ресурсов, процессором или другими несвязанными факторами, поэтому игры, известные своими «тормозами», не обязательно станут полностью плавными в одночасье.
Тем не менее, это один из наиболее перспективных подходов, разработанных сообществом, для борьбы с заиканиями при компиляции шейдеров на системном уровне. SCSKiller доступен через официальный репозиторий GitHub, а текущий релиз 1.2.0 распространяется как в виде установщика, так и в виде портативной сборки.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Sebastian Castellanos




