From 3f48f53bd5d4ce835326f2fe02bb9878f62b7b1d Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Tue, 10 Feb 2026 01:48:59 +0400 Subject: feat: добавление документации по эффектам и частицам MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/specs/effects.md | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 docs/specs/effects.md (limited to 'docs/specs/effects.md') 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”. -- cgit v1.2.3