Документация
Docs/ru/reference/effect-format/baking.md
Запекание эффектов и backend-ы
Сгенерированный справочник. Не редактируйте его напрямую. Обновите
BuildTools/EffectFormatInterface.json, затем выполнитеpython BuildTools/docs_effect_format.py --write.
| Индекс | Синтаксис | Состояние рендеринга | Ресурсы | Запекание | Runtime | Проверка | Канонический JSON | Руководство |
Каждый проход создаёт один файл метаданных и семь вариантов для каждой стадии шейдера. Исходный .fofx копируется в запечённые ресурсы, потому что runtime продолжает читать из него состояние [Effect].
Варианты стадии: spv, spv_sdl, glsl, glsl_es, hlsl, msl_mac, msl_ios
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
effect-format.baking.compiler-prelude |
Сгенерированный пролог шейдера | Перед ShaderCommon и текстом стадии baker добавляет ‘#version <Version> es’, ‘precision highp float’, MAX_SCRIPT_VALUES, а в 3D-сборках также MAX_BONES и MAX_TEXTURES. | Авторские шейдеры используют единый контракт compile-time формы и не должны дублировать эти директивы. | Source/Tools/EffectBaker.cpp |
effect-format.baking.compiler-target |
Целевое окружение glslang | Обе стадии компилируются как GLSL для клиента Vulkan 1.0 и цели SPIR-V 1.0, затем один раз на проход связываются и строят reflection. | Все варианты backend-ов получаются из одной проверенной связанной программы. | Source/Tools/EffectBaker.cpp |
effect-format.baking.link-interface |
Проверка интерфейса стадий | Вершинная и фрагментная стадии каждого прохода должны разбираться, связываться и предоставлять корректную reflection-модель. | Несоответствия location/type и синтаксические ошибки останавливают запекание ресурсов до runtime. | Source/Tools/EffectBaker.cpp |
effect-format.baking.metadata |
Метаданные прохода | Каждый проход создаёт info-артефакт с нативными привязками [EffectInfo] и плотными слотами и числами ресурсов по стадиям в [EffectInfoSdl]. | Runtime-backend-ы используют результаты reflection без запуска glslang. | Source/Tools/EffectBaker.cpp |
effect-format.baking.native-flavors |
Нативные и кросс-компилированные варианты | Каждая стадия создаёт нативный Vulkan SPIR-V, desktop GLSL 330, GLSL ES 300, HLSL Shader Model 4.0 и исходный Metal для macOS и iOS. | Один исходный эффект поддерживает активные backend-ы рендерера без проектных ответвлений шейдера. | Source/Tools/EffectBaker.cpp |
effect-format.baking.sdl-remap |
Переназначение дескрипторов SDL_GPU | Baker копирует нативный SPIR-V, переписывает descriptor set-ы и binding-и под соглашение SDL_GPU для отдельных стадий и сохраняет результат как spv_sdl. Исходный Metal компилируется из переназначенного модуля. | Нативные привязки Vulkan остаются неизменными, а SDL_GPU получает плотные локальные слоты стадий. | Source/Tools/EffectBaker.cpp |
effect-format.baking.source-copy |
Запечённая копия исходника | После артефактов всех проходов исходный .fofx записывается в набор запечённых ресурсов. | RenderEffect повторно разбирает состояние [Effect] во время выполнения; исходный файл является частью набора runtime-артефактов. | Source/Tools/EffectBaker.cpp, Source/Frontend/Rendering.cpp |
effect-format.baking.incremental |
Набор инкрементальных выходов | Проверка запекания отслеживает копию исходника, метаданные проходов и каждый артефакт стадии/варианта для всех объявленных проходов. | Отсутствующий или устаревший вариант должен делать эффект кандидатом на повторное запекание. | Source/Tools/EffectBaker.cpp |