Шейдеры
Шейдеры — это программные фрагменты, которые выполняются на ядрах GPU. Они определяют методы рендеринга.
Флаги материального шейдера и комбинации шейдеров
Шейдеры определяют флаги материала, которые можно настраивать для каждого материала. Каждый флаг материального шейдера изменяет часть кода шейдера, чтобы изменить внешний вид материала. Например, при включении флага “USE_PROCEDURAL_WIND_ANIMATION” материал начинает анимироваться по фиксированной оси в зависимости от ветра в сцене.
Кэш шейдеров
Каждый материал определяет новую комбинацию флагов шейдера, что, в свою очередь, определяет новый код шейдера, который необходимо скомпилировать. Игра поставляется с кэшем шейдеров, который содержит все уникальные комбинации шейдер + флаги материального шейдера, присутствующие в базовой игре.
Массовая компиляция шейдеров для модов
Если модуль добавляет значительное количество новых комбинаций, компиляция шейдеров во время выполнения (runtime) может существенно нарушить ход игры. Чтобы избежать этого, владельцу мода следует скомпилировать уникальные комбинации шейдер + материал, введённые в этом модуле. Для этого во время публикации модуля через функцию “Publish Module” в редакторе должен быть отмечен флажок “Compile Shaders”. Кэш шейдеров будет сохранён в папку “Modules/‘ModuleName’/Shaders/D3D11”. Обратите внимание, что игровые шейдеры могут изменяться в некоторых обновлениях версий, хотя это происходит не очень часто; в таких случаях старый файл кэша шейдеров станет недействительным и использоваться не будет. Чтобы избежать этого, рекомендуется пересоздавать кэш шейдеров перед каждой загрузкой нового мажорного обновления игры. Система компиляции шейдеров в значительной степени распараллелена и может завершить работу примерно за 30–60 минут, в зависимости от многоядерной производительности процессора.
