From 5035d022206bf9ace54a43b4d65abe0b9fc0f361 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Tue, 10 Feb 2026 23:27:43 +0000 Subject: Add MSH geometry export and preview rendering tools - Implemented msh_export_obj.py for exporting NGI MSH geometry to Wavefront OBJ format, including model selection and geometry extraction. - Added msh_preview_renderer.py for rendering NGI MSH models to binary PPM images, featuring a primitive software renderer with customizable parameters. - Both tools utilize the same NRes parsing logic and provide command-line interfaces for listing models and exporting or rendering geometry. --- docs/specs/effects.md | 69 --------------------------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 docs/specs/effects.md (limited to 'docs/specs/effects.md') diff --git a/docs/specs/effects.md b/docs/specs/effects.md deleted file mode 100644 index 2e9681a..0000000 --- a/docs/specs/effects.md +++ /dev/null @@ -1,69 +0,0 @@ -# Эффекты и частицы - -Пока что — **не байтовая спецификация**, а “карта” по тому, что видно в библиотеках. Полную документацию по эффектам/шейдерам/частицам можно будет сделать после того, как: - -- найдём формат эффекта (файл/ресурс), -- найдём точку загрузки/парсинга, -- найдём точки рендера (создание буферов/вершинного формата/материалов). - ---- - -## 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