FOnline Engine
Current master GitHub
Документация Docs/ru/reference/effect-format/resources.md

Шейдерные ресурсы эффекта

Сгенерированный справочник. Не редактируйте его напрямую. Обновите BuildTools/EffectFormatInterface.json, затем выполните python BuildTools/docs_effect_format.py --write.

Индекс Синтаксис Состояние рендеринга Ресурсы Запекание Runtime Проверка Канонический JSON Руководство

Compile-time ограничения

Стабильный ID Параметр CMake Имя runtime По умолчанию Значение Источник
effect-format.limit.script-values FO_EFFECT_SCRIPT_VALUES EFFECT_SCRIPT_VALUES 16 Число float-слотов в ScriptValueBuf. Значение должно быть положительным и делиться на четыре, потому что объявление GLSL представляет собой массив vec4, а нативный buffer выровнен по 16 байтам. Source/Frontend/Rendering.h, BuildTools/cmake/ProjectInterface.json
effect-format.limit.passes FO_EFFECT_MAX_PASSES EFFECT_MAX_PASSES 6 Максимальное число проходов рендеринга в одном эффекте и исключительная верхняя граница хранилища состояния и backend-объектов отдельных проходов. Source/Frontend/Rendering.h, Source/Frontend/Rendering.cpp
effect-format.limit.model-textures FO_MODEL_MAX_TEXTURES MODEL_MAX_TEXTURES 8 Число sampler-ов ModelTexN и записей ModelTexBuf, доступных 3D-эффектам. Source/Frontend/Rendering.h, Source/Tools/EffectBaker.cpp
effect-format.limit.model-bones FO_MODEL_MAX_BONES MODEL_MAX_BONES 54 Число записей WorldMatrices, предоставляемых 3D-эффектам через ModelBuf и шейдерный define MAX_BONES. Source/Frontend/Rendering.h, Source/Tools/EffectBaker.cpp

Ресурсы и входы шейдеров

Стабильный ID Ресурс Требование Причина Источник
effect-format.resource.vertex-2d Входной формат Vertex2D Эффекты ImGui, QuadSprite и Primitive получают из Vertex2D locations 0..3: позицию vec3, нормализованный цвет, текстурные координаты vec2 и egg/вспомогательные данные vec2. Не-модельные usage совместно используют одну нативную вершинную структуру, даже если шейдер игнорирует часть входов. Source/Frontend/Rendering.h, Resources/Core/Effects/2D_Default.fofx
effect-format.resource.vertex-model Входной формат Vertex3D Эффекты Model получают locations 0..8: позицию, нормаль, основной UV, базовый UV, tangent, bitangent, веса смешивания, индексы смешивания и цвет. Все модельные шейдеры должны соответствовать фиксированному формату Vertex3D, настроенному каждым активным backend-ом. Source/Frontend/Rendering.h, Resources/Core/Effects/3D_Skinned.fofx
effect-format.resource.native-descriptor-sets Нативное соглашение дескрипторов Vulkan Авторские нативные ресурсы шейдеров должны размещать uniform buffer-ы в descriptor set 0, а combined image sampler-ы в descriptor set 1. Rendering-Vulkan использует нативный SPIR-V без изменений; он же служит источником кросс-компиляции в GLSL, GLSL ES и HLSL. Source/Tools/EffectBaker.cpp, Resources/Core/Effects/2D_Default.fofx
effect-format.resource.explicit-bindings Явные binding-и Каждый живой sampler и uniform block должен объявлять явный binding. Номера binding-ов должны быть уникальны внутри каждой стадии шейдера и класса ресурсов. Назначение слотов SDL_GPU сортирует авторские binding-и и переназначает их в плотные слоты каждой стадии. Source/Tools/EffectBaker.cpp
effect-format.resource.samplers Sampler-ы рендерера Runtime предоставляет MainTex, IndoorMaskTex и BackgroundTex, а в 3D-сборках также ModelTex0..ModelTexN-1. BackgroundTex является переданным вызывающим кодом снимком сцены для рефракции. Другие отражённые имена sampler-ов RenderEffect не заполняет. Шейдер с другим именем sampler-а может скомпилироваться, но не получит текстурную привязку от Engine. Source/Tools/EffectBaker.cpp, Source/Frontend/Rendering.h
effect-format.resource.general-buffers Общие uniform buffer-ы Распознаются ProjBuf, MainTexBuf, EggBuf, SpriteBorderBuf, ParticleSamplingBuf, TimeBuf, RandomValueBuf, ScriptValueBuf и CameraBuf. ParticleSamplingBuf задаётся вызывающим кодом для каждого вызова отрисовки и управляет выборкой текстур частиц и искажением. Объявления должны точно соответствовать нативным std140-совместимым layout-ам. EffectBaker проверяет отражённые размеры байтов относительно buffer-структур RenderEffect. Source/Tools/EffectBaker.cpp, Source/Frontend/Rendering.h
effect-format.resource.model-buffers 3D uniform buffer-ы Распознаются модельные buffer-ы ModelBuf, ModelTexBuf и ModelAnimBuf; MAX_BONES и MAX_TEXTURES предоставляет пролог baker-а. Эти layout-ы передают skinning, освещение, данные текстурного атласа и тайминги анимации модельным эффектам. Source/Tools/EffectBaker.cpp, Source/Frontend/Rendering.h
effect-format.resource.script-values ScriptValueBuf Внутри ScriptValueBuf объявите ‘vec4 ScriptValue[MAX_SCRIPT_VALUES / 4]’. Плоский диапазон индексов для скриптов равен 0..EFFECT_SCRIPT_VALUES-1. Baker предоставляет MAX_SCRIPT_VALUES, а клиентский API записывает диапазоны float в тот же нативный buffer. Source/Tools/EffectBaker.cpp, Source/Frontend/Rendering.h
effect-format.resource.time-random Buffer-ы кадра TimeBuf предоставляет FrameTime.x и GameTime.x как секунды от начала сессии с оборачиванием на 8192; RandomValueBuf предоставляет четыре независимых значения [0,1], обновляемых каждый кадр. Эти buffer-ы обновляются для каждого загруженного эффекта только тогда, когда reflection сообщает, что они ему нужны. Source/Client/EffectManager.cpp, Source/Frontend/Rendering.h
effect-format.resource.camera Аффинные базисы CameraBuf CameraBuf содержит MapAnchorScreenPos и ChunkScreenAnchor. Шейдеры вычисляют любой базис как ‘.xy + TexCoord * .zw’, получая координаты, привязанные к миру или экрану. Масштабные компоненты сохраняют непрерывность на дополненных/разбитых на chunks render target-ах и при zoom. Source/Frontend/Rendering.h
effect-format.resource.unsupported Неподдерживаемые ресурсы шейдера Неизвестные uniform block-и, storage buffer-ы и storage image отклоняются. Объявленные, но неиспользуемые descriptor resource отклоняются при патчинге SDL SPIR-V. Рендерер привязывает только фиксированный словарь buffer-ов и sampled textures. Source/Tools/EffectBaker.cpp
effect-format.resource.sdl-limits Ограничения SDL_GPU на стадию Каждая стадия шейдера может использовать не более 16 sampler-ов и 4 uniform buffer-ов. Слоты уплотняются независимо для sampler-ов вершинной стадии, vertex UBO, sampler-ов фрагментной стадии и fragment UBO. SDL_CreateGPUShader требует количества для каждой стадии, а соглашение backend-а о дескрипторах отличается от нативного Vulkan. Source/Tools/EffectBaker.cpp
Введите запрос.