FOnline Engine
Current master GitHub
Документация 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-а.

Введите запрос.