Минусы будут? Объективно, самые интересные статьи на dtf именно про политику
Вот это вставил и играй на айфонах у вас)
Лол. Помнится на bada os от Samsung этой фигней промышляли), когда сервера вырубили, то большая часть приложений отвалилась
Думаю тоже стоит добавить: видеочип вообще ничего компилировать не умеет, он только исполняет(рисует).
В драйвере от производителя видеочипа (nvidia/amd/intel) зашит компилятор, который позволяет компилировать байткод в понятные нули/единицы. Компиляция все так же падает на плечи процессора и весь этот процесс тратит процессорное время.
Так что технически, если бы компиляции вообще не было, то при запуске игры, ты бы увидел 3д модели с плейсхолдерными текстурами. В UE это WorldGridMaterial. И ждал бы ты эту сборку пару часов.
Забыл дописать, я в сообщении написал 4 шага.
При компиляции автономной версии игры мы останавливаемся на 3 шаге. Фризы вызывает как раз 4 шаг.
Но вообще, при загрузке уровня движок уже отправляет их видеокарте, но не все, а только со статичных объектов (там условно кирпичные поверхности, фонари, мечи, щиты и т.д.).
Как только материал один раз скомпилировался - он остается в памяти видеокарты до следующего закрытия 3D приложения.
И тут мы плавно подходим, почему игра все равно может фризить? Всё просто, у нас есть объекты, которые могут появится динамически во время игры, например muzzle flash, blade slash или какой-нибудь взрыв.
Следовательно, если все это сложить, то можно понять что есть другой метод решения, вместо компиляции шейдеров.
Ну как сказать... Процесс Compiling Shaders в самом UDK, это перевод нод в HLSL код (язык программирования шейдеров).
Все это сохраняется в папку Derived Data Cache, там хранится готовый байт код шейдера (это не нули и единицы). Байт код универсальный для любой видеокарты, однако это ещё не конец, его теперь нужно перевести в нули и единицы. От этого и получаются фризы, у RTX 4080 и 3080 разные инструкции, следовательно все это добро надо перевести в 0101010 и только тогда видеокарта сможет рисовать на экране.
Процесс в UE выглядит как-то так:
1) Программируем шейдер нодами.
2) Перевод нод в HLSL.
3) HLSL переводим в байткод.
4) Байткод в понятные для видеочипа инструкции.
Это можно закешировать заранее для стимдека или какой-нибудь консоли, т.к. у них одинаковое железо.
Автоматически - нет, только ручная запись PSO.
К сожалению да, вкусное сметают быстро :(. Но все равно, даже те что не сметают - читать их и комменты, это очень большое удовольствие