LINUX.ORG.RU

Вопрос по стиму и Shader Cache

 , ,


0

1

Не совсем разбираюсь в теме. Являюсь обладателем паровой колоды. Прочитал новость, что валв пофиксили инкрементальные обновления кешов шейдеров, и теперь при обнове качается меньше.
До этого читал, что игрушки теперь тянут оптимизированные кеши шейдеров под деку, не компилируют их на месте и из-за этого игры становятся оптимизированы под её железо, больше фпс и быстрее загрузка.
Отсюда вопрос. Вот я, например, купил на распродаже на гоге Cyberpunk (ещё не играл). Получается, что у меня будет более низкая производительность, т.к. не скачать шейдерные кеши из стима автоматически? Или он сам это сделает каким-то способом?
Или можно их добавить как-то на устройство, или заставить скомпилировать 1 раз? Не понимаю, как это работает, и где они хранятся.

★★★★★

Будет компилиться по ходу игры. Всё новое будет с низкой производительностью, будешь ходить по одному и тому же месту - производительность вырастет до максимума

DumLemming ★★
()

Кеш шейдеров по-хорошему влияет только на скорость загрузки игры, но не на FPS. Потому что шейдеры компилируются при загрузке, а не каждый кадр. Плюс авторы тяжёлых игр обычно реализуют своё собственное кеширование, так что медленной будет лишь первая загрузка после установки.

В целом не выглядит как что-то критичное.

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

Кеш шейдеров по-хорошему влияет только на скорость загрузки игры, но не на FPS.

Вообще, если мир большой - то могут влиять, наверное. Вплане, когда карта динамично подгружается, если он будет компилировать - будут просадки.

fehhner ★★★★★
() автор топика

Кэш шейдеров не влияет на производительность игры. Он влияет лишь на то, будут ли у тебя все шейдеры скомпилированы заранее или же будут компилироваться по мере появления их в игре (например, во время загрузок).

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от fehhner

Вплане, когда карта динамично подгружается, если он будет компилировать - будут просадки.

Да, но только это разовое влияние, а количество шейдеров в игре ограничено. После первой компиляции шейдеры будут браться из кеша твоего видеодрайвера и просадок не будет. Но при обновлении видеодрайвера они опять будут компилироваться/кэшироваться.

Kron4ek ★★★★★
()

Будет более долгая хагрузка. Шейдеры компилируются и кэшируются средствами mesa.
Стим имеет слой fossilize для opengl и vulkan который кэширует шейдеры со своей стороны и синхронизирует с БД. Это имеет смысл если у тебя общая версия драйвера и gpu с большим количеством пользователей (для стимдека имеет) и если у тебя быстрый интернет и скачивание будет быстрее компиляции

mittorn ★★★★★
()

До этого читал, что игрушки теперь тянут оптимизированные кеши шейдеров под деку, не компилируют их на месте и из-за этого игры становятся оптимизированы под её железо, больше фпс и быстрее загрузка.

Не совсем. Чтобы шейдеры исполнялись они всегда должны быть перед этим скомпилированы. Компилируются всегда под конкретную видюшку/драйвер. Компиляция происходит на процессоре, что приводит к фризам/статтеру при появлении новых эффектов.

Есть несколько разных способов с этим бороться, но выходит не всегда удачно (dx12 игры часто под виндой имеют проблему с шейдерами), либо способ перестает работать при трансляции (dx11 -> vulkan). Самый тупой способ - собрать во время запуска игры при первом запуске и обновлении драйвера, но это может занять 5-10 минут.

Просто взять и форсировать компиляцию шейдеров при запуске со стороны пользователя нельзя. Поэтому кэш приходится собирать. Подход вальве - собрать этот кэш, раздать с игрой и скомпилировать в фоне (настраивается).

Компиляцию шейдеров в процессе игры постоянно улучшают, но полностью это проблему не решает. Раньше же это было полностью неиграбельно для большинства игр. Если в сетевом шутере можно собрать почти все шейдеры за несколько чесов каток, то в играх с прогрессом (типа borderlads 2, Path of exile) фризы были от начала и до конца игры.

Поэтому игры лучше брать в стиме. Альтернатива - использование dxvk-async (говорят, что он недавно стал не нужен, но не вникал в технологию). Асинк позволяет компилировать шейдеры без фризов и просто не рисует этот эффект.

altwazar ★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)
Ответ на: комментарий от altwazar

Если в сетевом шутере можно собрать почти все шейдеры за несколько чесов каток, то в играх с прогрессом (типа borderlads 2, Path of exile) фризы были от начала и до конца игры.

Ага, я так Metroid Prime Remastered через yuzu прохожу. Всю игру держится 60FPS, при переходе на другую часть карты резко падает на несколько секунд, и потом опять стабильно 60. Говорят, что проблема максимальна в сетевых шутерах, когда новый эффект от оружия или специальной атаки подгружается.

Не совсем. Чтобы шейдеры исполнялись они всегда должны быть перед этим скомпилированы. Компилируются всегда под конкретную видюшку/драйвер.

Провёл небольшие изыскания в гугле для повышения грамотности. Я так и думал, как ты написал, но вот челу на реддите ответили, что кеш можно взять например в лютрисе, скачать архив dxvkcache, если для твоей игры уже скомпилирован. Пример Owerwatch.

Отсюда я опять что-то не догоняю, т.к. читал что Elden Ring используют как стресс-тест для компов, т.к. у него пипец проседания. А валв умудрился отточить его под деку так, что вообще нет фреймдропов. Т.е., и какой тогда может быть кеш от лютриса, если он отдельный под железо?

И у меня, к сожалению, есть уже его копия из другого шопа (не стима), потому и встал вопрос, что где-то может можно взять шейдеры - хочется нормально, без лагов поиграть.

fehhner ★★★★★
() автор топика
Ответ на: комментарий от Kron4ek

Кэш шейдеров не влияет на производительность игры. Он влияет лишь на то, будут ли у тебя все шейдеры скомпилированы заранее или же будут компилироваться по мере появления их в игре (например, во время загрузок).

Ну вот Elden Ring у всех проседает, а на прекомпилированных шейдерах - нет.

fehhner ★★★★★
() автор топика
Ответ на: комментарий от mittorn

Стим имеет слой fossilize для opengl и vulkan который кэширует шейдеры со своей стороны и синхронизирует с БД. Это имеет смысл если у тебя общая версия драйвера и gpu с большим количеством пользователей (для стимдека имеет) и если у тебя быстрый интернет и скачивание будет быстрее компиляции

В ссылке на реддит, что я дал сообщением выше, чел пишет

I currently have 10 games installed and 30gb(!!) are being eaten up in the Shaders folder.

Значит, есть папка с шейдерами и их можно копировать (при аналогичном железе). Жаль не нашёл никакого ресурса, где их можно скачать под деку (при поиске вылезают всё новости про то, что валв их рассылает).
Хитрый ход, переманивают пользователей в свой магазин, чтобы не пользовались другими.

fehhner ★★★★★
() автор топика
Ответ на: комментарий от fehhner

Понятно, что во время компиляции шейдера, когда он появился впервые, будет просадка по FPS или фриз на долю секунды, это неизбежно. Но после компиляции шейдер попадает в кэш видеодрайвера и потом всегда берется оттуда, пока не обновишь видеодрайвер.

Впрочем, в новых версиях DXVK эта проблема частично решена с помощью graphics pipeline library. При использовании Graphics Pipeline Library (для этого нужна поддержка со стороны видеодрайвера) при первом появлении шейдера может быть просадка FPS, но фризов не будет. А в vkd3d-proton такую штуку пока не завезли, насколько я знаю.

Kron4ek ★★★★★
()
Последнее исправление: Kron4ek (всего исправлений: 2)
Ответ на: комментарий от fehhner

Т.е., и какой тогда может быть кеш от лютриса, если он отдельный под железо?

Кто-то собрал кэш и распространяет его через скрипт установки лютриса. Мне известен только один такой случай - овервотч. Сами шейдеры компилируются при запуске игры и она пару минут в этом случае будет притормаживать. Без этого архива шейдеры бы пришлось ловить налету, в случае с овервотчем это приводило к паре часов диких лагов, пока большая часть эффектов не закэшируется. Сам я использовал dxvk async, с ним в овере можно можно было собирать кэш на ходу без проблем. Но в лютрисе его избегали, так как был пущен слух о бане в овере за async (подтвержденных случаев не было).

altwazar ★★★★
()
Ответ на: комментарий от fehhner

Хитрый ход, переманивают пользователей в свой магазин, чтобы не пользовались другими.

Скорее беда в том, что кроме вальве никто не старается. Особенно, когда речь идет о линуксе.

altwazar ★★★★
()
Последнее исправление: altwazar (всего исправлений: 1)