Компиляция шейдеров, как это надо делать?

Недавний выход новой DAV не на шутку всколыхнул боевитых ребят. Не будем сейчас про всякие ЛБГТ - про это и так уже много чего сказали. Возьмем вторую причину, которая неожиданно попала в прицел налитых кровью глаз - долгое время компиляции шейдеров.

Казалось бы - в 24 году таким мало кого удивишь, и сей процесс мы видели в большом количестве игр. И вроде бы понятно, для чего всё это.

Но в этот раз оно пошло по-новой. В атаку наши барнаульцы ринулись как в последний раз, моментально забыв про всё, что было ранее.

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

Метод № 0. Компилируем шейдеры перед запуском игры.

Результат:

Компиляция шейдеров, как это надо делать?

Видите? - Ну вообще не в какие ворота. Стыд и позор. Но должны же быть какие-то другие методы?

Метод № 1. Не компилируем шейдеры. Пусть игра делает это на ходу.

Компиляция шейдеров, как это надо делать?

Игра быстро запускается. Но к чему это приведет?

Результат:

Слышим крики про статтеры. "Да блин играть невозможно, фризит на ровном месте!".

Метод № 2. Запускаем процесс компиляции в фоне. Загружая попутно ПК какой нибудь минимальной активностью (показываем комикс, и т.д). Компиляция идет, но дольше, чем обычно.

Однако...

Результат:

"Я что сюда пришел комикс смотреть? Где мой геймлей? Вези меня мразь!! У меня время рефанда истекает, дайте мой геймплей!!"

Причем стоит учесть, что мы не учитываем ситуацию, когда ты обновил драйвера, но уже прошел пролог (и условный комикс), но игра вынуждена снова компилить шейдеры. Снова комиксы смотреть?

И вот последний вариант.

Компиляция шейдеров, как это надо делать?

Метод № 3. Запускаем процесс компиляции в фоне, но позволяем при этом играть. Компиляция идет еще дольше. Намного дольше. Те, у кого слабые компы (кстати, именно эти ребята громче всего и орут про компиляцию в 30 минут) попадают к кошмар.

Результат:

"Да блин задолбали!!! Что за фризы!!! Когда это прекратится? Я уже ЧАС играю, и оно все еще фризит!!"

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

В связи с этим вопрос - как именно надо компилить шейдеры? Чтобы все были сыты и довольны. И чтобы Дамир Валиахметов не ругался.

2424
11
111 комментарий

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

Вот раньше как было, прочитал в журнале что вышла игра. Одеваешься, пиздуешь на остановку, ждешь на морозе 30 минут автобус, через весь город едешь на барахолку, а там МЕНТОВСКАЯ ОБЛАВА. Все прячут свои пиратки и делают вид что они не продавцы, а так, просто стоят с огромными сумками и чего-то ждут. Ждешь пока все это закончится, находишь своего постоянного барыгу, покупаешь диск. Пиздуешь на остановку, ждешь 30 минут на морозе, едешь домой. 50 минут устанавливаешь, установщик крашится, понимаешь что диск бракованный, одеваешься, едешь обратно, меняешь у барыги диск на аналогичный, едешь домой, устанавливаешь, играешь без патчей и с багами.

Так шо не выебывайтесь.

37
5
3

Не было таких игор;)

2
1

Ты еще забыл про жмешь инсталл, прокликиваешь 100500 менюшек, оно копируется с диска на хард, потом что-то еще разархивируется на харде, а затем, если тебе безумно повезло, ты без танцев с бубном её даже запустить можешь. Но это редкость.

я надеюсь, тебе еа платит за этот шизо-захист

24
1

как же он дефает

6

Я не очень в курсе технической стороны вопроса. В чем необходимость компилировать именно на машине пользователя, а не поставлять уже скомпилированные? Накомпилировать заранее самые популярные варианты и давать скачать, оставив локальную компиляцию для редкого железа или когда нет сети.

2

Шейдеры — это такие программки, которые говорят железу, как рисовать картинку. Вот только пишутся они не для одной конкретной видеокарты, а с универсальным кодом, который потом компилится под железо каждого игрока. Почему нельзя просто брать уже скомпилированные шейдеры? А потому что аппаратная часть у всех разная, драйверы обновляются, патчи прилетают, и каждый раз возникает вероятность, что шейдер, который работал в прошлый раз, вдруг выдаст непредсказуемый эффект на экране.

13