aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-11-01 12:13:53 +0300
committerValentin Popov <valentin@popov.link>2026-11-01 12:13:53 +0300
commit315afff2202f3d7cfd7299a29c0ca67a757b9e2e (patch)
tree1a08a775bb255615c2e0f8bc67016f31a76ffd1a /docs/tomes
parent923ef2aad6b7284d745756d938b90965bb92a110 (diff)
downloadfparkan-315afff2202f3d7cfd7299a29c0ca67a757b9e2e.tar.xz
fparkan-315afff2202f3d7cfd7299a29c0ca67a757b9e2e.zip
feat(fx): track phase and restart per effect instance
Diffstat (limited to 'docs/tomes')
-rw-r--r--docs/tomes/05-render.md16
1 files changed, 15 insertions, 1 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index 266cb47..7cbe7d7 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -740,6 +740,19 @@ struct FxHeader60 {
локальную точку опоры, scale -- базовый масштаб экземпляра. Unknown flags и
settings ID сохраняются.
+У каждого экземпляра эффекта есть своё начало отсчёта. Например, эффект
+длительностью четыре секунды, созданный на 135-й секунде, на 137-й находится
+в середине цикла: `(137 − 135) / 4 = 0,5`. Режим может идти вперёд,
+повторяться, идти назад или сохранять постоянную фазу. Вызывающий код может
+сменить режим экземпляра, не меняя документ. Запрос перезапуска ждёт конца
+текущего цикла и начинает новый при следующем обновлении.
+
+Эти правила реализованы в `fparkan-fx::clock`. Приложение передаёт одну фазу
+геометрии, свету и звуку одной Control-строки; повторная отправка кадра не
+пересчитывает её и не расходует случайные числа повторно. В статической сцене
+все экземпляры пока рождаются в момент ноль. Управляющие команды Control и
+очередь обновления с шагом 50 миллисекунд остаются задачами игрового цикла.
+
Каждая команда начинается с `uint32_t command_word`:
```text
@@ -867,7 +880,8 @@ Effect renderer подавляет header bit `0x800` только при
render selector 0. Native AniMesh component path захвачен с selector 1, а в
его 53-entry manager присутствуют FX entries с header `0xD00`; preview
использует selector 1 и пропускает такие visual commands. Изменения manager
-`A8`, которые задают runtime phase/header gate, пока не моделируются. Header
+`A8`, которые задают runtime phase/header gate, пока заменены нулём с явным
+счётчиком `control_fx_manager_flag_stub`. Header
bit `0x10` относится к activation lifecycle и не выключает draw.
Для visual effect renderer использует MAT0, указанный самой командой. Его