aboutsummaryrefslogtreecommitdiff
path: root/docs/specs/effects.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-02-10 00:48:59 +0300
committerValentin Popov <valentin@popov.link>2026-02-10 00:48:59 +0300
commit3f48f53bd5d4ce835326f2fe02bb9878f62b7b1d (patch)
tree9d169f5e269904b90122b2a5daf1c43859cb9f89 /docs/specs/effects.md
parent2953f0c8c92bb43fed6065edd52858ebf08be57f (diff)
downloadfparkan-3f48f53bd5d4ce835326f2fe02bb9878f62b7b1d.tar.xz
fparkan-3f48f53bd5d4ce835326f2fe02bb9878f62b7b1d.zip
feat: добавление документации по эффектам и частицам
Diffstat (limited to 'docs/specs/effects.md')
-rw-r--r--docs/specs/effects.md69
1 files changed, 69 insertions, 0 deletions
diff --git a/docs/specs/effects.md b/docs/specs/effects.md
new file mode 100644
index 0000000..2e9681a
--- /dev/null
+++ b/docs/specs/effects.md
@@ -0,0 +1,69 @@
+# Эффекты и частицы
+
+Пока что — **не байтовая спецификация**, а “карта” по тому, что видно в библиотеках. Полную документацию по эффектам/шейдерам/частицам можно будет сделать после того, как:
+
+- найдём формат эффекта (файл/ресурс),
+- найдём точку загрузки/парсинга,
+- найдём точки рендера (создание буферов/вершинного формата/материалов).
+
+---
+
+## 1) Что видно по `Effect.dll`
+
+- Есть экспорт `CreateFxManager(...)`, который создаёт менеджер эффектов и регистрирует его в движке.
+- Внутри много логики “сообщений/команд” через виртуальные вызовы (похоже на общий компонентный интерфейс).
+- Явного парсера формата эффекта (по типу “читать заголовок, читать эмиттеры…”) в найденных местах пока не идентифицировано.
+
+---
+
+## 2) Что видно по `Terrain.dll` (рендер‑статистика частиц)
+
+В `Terrain.dll` есть отладочная/статистическая телеметрия:
+
+- количество отрендеренных частиц (`Rendered particles`)
+- количество батчей (`Rendered batches`)
+- количество отрендеренных треугольников
+
+Это подтверждает:
+
+- частицы рендерятся батчами,
+- они интегрированы в общий 3D‑рендер (через тот же графический слой).
+
+---
+
+## 3) Что важно для совместимости
+
+Даже без точного формата эффекта, из поведения оригинала следует:
+
+- Эффекты/частицы завязаны на общий набор рендер‑фич (фильтрация/мультитекстурность/блендинг).
+- На слабом железе (и для минимализма) должны работать деградации:
+ - без мипмапов,
+ - без bilinear/trilinear,
+ - без multitexturing,
+ - возможно с 16‑бит текстурами.
+
+---
+
+## 4) План “докопать” до формата эффектов
+
+1. Найти **точку создания эффекта по имени/ID**:
+ - поискать места, где в строки/лог пишется имя эффекта,
+ - найти функции, которые принимают “путь/имя” и возвращают handle.
+
+2. Найти **точку загрузки данных**:
+ - чтение из NRes/RsLi ресурса,
+ - распаковка/декодирование.
+
+3. Зафиксировать **структуру данных эффекта в памяти**:
+ - эмиттеры,
+ - спауны,
+ - lifetime,
+ - ключи размера/цвета,
+ - привязка к текстурам/материалам.
+
+4. Найти рендер‑код:
+ - какой vertex format у частицы,
+ - как формируются квадраты/ленты (billboard/trail),
+ - какие state’ы включаются.
+
+После этого можно будет выпустить полноценный документ “FX format”.