Phosphor

0
README.md

Phosphor

Phosphor
— научный физический движок на Rust для детерминированных симуляций с акцентом на точность, воспроизводимость и кроссплатформенность (Desktop + WASM).

Проект организован как workspace на Rust 2021 и разделяет:

  • вычислительное ядро (математика, геометрия, физика, солверы),
  • headless runtime/backend,
  • слой визуализации и аналитический GUI.

Быстрый обзор

  • детерминированная арифметика и переключаемая точность
    f32/f64
    (по умолчанию
    f64
    );
  • Data-Oriented Design: SoA-хранилище тел + генерационные идентификаторы;
  • интеграторы:
    SymplecticEuler
    ,
    VelocityVerlet
    ,
    Rk4
    ,
    BackwardEuler
    ;
  • collision stack: broad phase
    BVH
    , narrow phase
    GJK/EPA
    ,
    CCD/TOI
    ;
  • Jacobian-based ограничения и sparse LCP-путь решения контактов;
  • физические свойства тел, редактируемые в рантайме:
    • масса, форма, упругость, трение, мягкость контакта,
    • линейное демпфирование, масштаб гравитации;
  • комбинируемая гравитация:
    • N-body взаимодействие,
    • естественная гравитация с явным
      g
      (вдоль оси
      Y
      );
  • ограничения сцены:
    • пол (
      floor
      ),
    • ограничивающий объём (
      bounds
      ), чтобы тела не уходили за пределы рабочей области;
  • GUI-инструменты для аналитики: time control, инспектор, outliner, real-time графики, экспорт данных.
  • UQ/validation контур:
    • параметрические sweep режимы
      Cartesian
      /
      DOE one-at-a-time
      /
      Monte Carlo
      ,
    • доверительные интервалы (CI) для
      energy_drift
      и
      max_speed
      ,
    • benchmark baseline + performance regression (slowdown ratio).

Архитектура

Структура workspace

КрейтНазначение
crates/core
математика, размерные типы, SIMD/dispatch, deterministic helpers
crates/geometry
коллайдеры, BVH, GJK/EPA, manifold, CCD
crates/physics
SoA-хранилище тел, интеграторы, контакты, солверы,
World
crates/runtime
headless runtime, команды/события, triple buffer, интерполяция
crates/backend
отдельный stdio JSON backend-процесс
crates/gui
desktop GUI-клиент для симуляций и аналитики
crates/render
рендер-пайплайн и подготовка render-данных
crates/ffi
wasm-bindgen bridge и zero-copy буферы
crates/io
сериализация/экспорт snapshot-данных

Быстрый старт

1) Проверить проект

2) Запустить GUI

3) Запустить headless backend отдельно

Режимы транспорта GUI

phosphor-gui
умеет работать как с внешним backend-процессом, так и in-process:

  • PHOSPHOR_GUI_TRANSPORT=auto
    (по умолчанию),
  • PHOSPHOR_GUI_TRANSPORT=process
    ,
  • PHOSPHOR_GUI_TRANSPORT=in-process
    .

Если выбран

process
, путь к бинарю можно задать через:

  • PHOSPHOR_BACKEND_BIN=/abs/path/to/phosphor-backend
    .

Пример:

Что можно делать в GUI

  • создавать произвольные 3D-объекты (sphere/cuboid/capsule/point) батчами;
  • задавать физические свойства при создании и редактировать их на лету;
  • переключать интегратор и управлять временем (
    play/pause/step/time scale
    );
  • включать естественную гравитацию с параметром
    g
    ;
  • задавать ограничения сцены:
    • пол (высота + упругость + трение),
    • ограничивающий объём (min/max + упругость + трение);
  • анализировать энергию/импульсы, смотреть outliner и инспектор;
  • запускать batch sweep (
    Cartesian
    /
    DOE
    /
    Monte Carlo
    ) и получать CI-метрики;
  • экспортировать графики и данные в CSV/JSON.

Точность, фичи и платформы

По умолчанию:

std + scalar-f64
.

Примеры сборок:

FFI / WASM

crates/ffi
реализует командно-ориентированный мост:

  • JS отправляет команды в движок;
  • Rust владеет памятью и состоянием симуляции;
  • данные для визуализации отдаются через zero-copy представления буферов;
  • используется тройная буферизация кадров для синхронизации producer/consumer.

Тестирование

Базовый прогон:

Целевые научные проверки:

Статический контроль:

CI-матрица (desktop/features/SIMD/WASM node+browser) описана в:

Документация

Полная техдокументация находится в каталоге

:

  1. архитектурные принципы;
  2. карта workspace и крейтов;
  3. core
    ,
    geometry
    ,
    physics
    ;
  4. runtime/wire/backend;
  5. ffi
    /WASM;
  6. render и GUI;
  7. I/O, валидация, профилирование и эксплуатация.

Лицензия

MIT