Документация
Docs/ru/reference/effect-format/validation.md
Проверка формата эффектов
Сгенерированный справочник. Не редактируйте его напрямую. Обновите
BuildTools/EffectFormatInterface.json, затем выполнитеpython BuildTools/docs_effect_format.py --write.
| Индекс | Синтаксис | Состояние рендеринга | Ресурсы | Запекание | Runtime | Проверка | Канонический JSON | Руководство |
| Стабильный ID | Правило | Требование | Причина | Источник |
|---|---|---|---|---|
effect-format.validation.required-sections |
Обязательное содержимое исходника | Отклоняйте отсутствующую секцию Effect или проход без пригодного вершинного либо фрагментного текста. | Частичный исходник не может создать полную связанную программу или runtime-состояние. | Source/Tests/Test_EffectBaker.cpp |
effect-format.validation.compiler-diagnostics |
Диагностика компилятора | Ошибки разбора, связывания или reflection шейдера останавливают запекание эффекта и нормализуют диагностику компилятора до одной строки лога. | Логи сборки остаются машиночитаемыми и сохраняют сообщение компилятора шейдера. | Source/Tests/Test_EffectBaker.cpp, Source/Tools/EffectBaker.cpp |
effect-format.validation.buffer-layout |
Layout uniform buffer-а | Отклоняйте известные uniform buffer-ы, отражённый размер которых отличается от соответствующей структуры RenderEffect, и любой неизвестный uniform block. | Все backend-ы загружают фиксированные нативные структуры без адаптации layout под отдельный шейдер. | Source/Tests/Test_EffectBaker.cpp, Source/Tools/EffectBaker.cpp |
effect-format.validation.bindings |
Привязки дескрипторов | Отклоняйте отсутствующие явные binding-и, повторяющиеся binding-и одной стадии, мёртвые объявления descriptor-ов и превышение лимита стадии SDL_GPU. | Плотное переназначение слотов SDL должно быть полным и детерминированным. | Source/Tools/EffectBaker.cpp |
effect-format.validation.output-flavors |
Полнота запечённых вариантов | Проверяйте исходник, метаданные, нативный SPIR-V, SDL SPIR-V, GLSL, GLSL ES, HLSL и оба выхода MSL для каждой стадии/прохода. | Ресурс может пройти один backend и остаться неполным для другого пакета. | Source/Tests/Test_EffectBaker.cpp |
effect-format.validation.metadata-bindings |
Метаданные reflection | Проверяйте значения нативных binding-ов [EffectInfo] и числа/слоты SDL [EffectInfoSdl] на репрезентативных эффектах. | Backend-ы зависят от идентичности метаданных даже при успешной компиляции самого шейдера. | Source/Tests/Test_EffectBaker.cpp |
effect-format.validation.cross-backend |
Видимая кросс-backend проверка | Проверяйте проектные эффекты на каждом профиле рендерера/backend-а, поставляемом проектом, включая сцены, чувствительные к depth/blend, и минимальный поддерживаемый профиль шейдера. | Кросс-компиляция не доказывает поведение драйвера, поддержку feature level, визуальный результат или производительность. | Source/Frontend/Rendering-OpenGL.cpp, Source/Frontend/Rendering-Direct3D.cpp, Source/Frontend/Rendering-Vulkan.cpp, Source/Frontend/Rendering-SDLGpu.cpp |
effect-format.validation.project-ownership |
Проверка проектного контракта | Подключаемый проект должен проверять каждый путь эффекта, назначение EffectType/subtype, реестр слотов ScriptValue, writer buffer-а, переопределение resource pack и видимый fallback, которыми он владеет. | Engine может проверить механику формата, но не способен вывести проектную семантику шейдеров или художественный замысел. | Source/Client/EffectManager.h, Source/Frontend/Rendering.h |
Команды проверки
python BuildTools\docs_effect_format.py --check
python -m unittest BuildTools.tests.test_docs_effect_format
cmake --build <build-dir> --config RelWithDebInfo --target RunUnitTests
Завершите проверку в подключаемом проекте запеканием его ресурсов и видимыми проверками на каждом поддерживаемом проектом профиле рендерера/backend-а.