Files
fparkan/docs/specs/effects.md

3.6 KiB
Raw Blame History

Эффекты и частицы

Пока что — не байтовая спецификация, а “карта” по тому, что видно в библиотеках. Полную документацию по эффектам/шейдерам/частицам можно будет сделать после того, как:

  • найдём формат эффекта (файл/ресурс),
  • найдём точку загрузки/парсинга,
  • найдём точки рендера (создание буферов/вершинного формата/материалов).

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”.