Та же программа на ash + winit + egui: орбитальная камера, три плоскости сетки,
загрузка .obj, три режима отображения, единый проход динамического рендеринга с
глубинным вложением и submit через synchronization2. Шейдеры общие с C++-версией —
build.rs компилирует их из shaders/ и вшивает SPIR-V в бинарь.
Пять крейтов повторяют карту целей CMake, но инвариант «весь Vulkan в одном месте»
теперь проверяет компилятор: у simv-mesh и simv-editor нет ash в зависимостях.
Расхождения, вынужденные языком, а не вкусом:
* App переехал в исполняемый крейт — в C++ граф целей цикличен (core владеет vk,
vk принимает core::Window&), и держится это лишь на том, что simv_vk видит
заголовки core, не линкуя цель; Cargo такой цикл отвергает;
* состояние сцены возвращается из замыкания интерфейса, а не ставится сеттерами:
замыкание вызывается из метода рендерера, трогать рендерер оттуда нельзя;
* выгрузка меша на видеокарту уехала из середины записи кадра, где C++-версия
зовёт vkDeviceWaitIdle уже после захвата образа цепочки показа.
Vulkan-контекст и цепочка показа написаны руками: замены vk-bootstrap в экосистеме
Rust нет. Обёртки Buffer и Image, лежащие в C++-версии без применения, здесь
задействованы всеми потребителями.
13 тестов, из них три перенесены из Catch2 дословно. cargo clippy -D warnings чист,
слой валидации молчит.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Состояние на момент заведения репозитория.
C++ приложение (src/, shaders/, tests/) — минимальный редактор 3D-моделей
на Vulkan 1.3: орбитальная камера, три опорные сетки через начало координат,
загрузка .obj с режимами отображения. Весь Vulkan изолирован в src/vk/.
Исследование (docs/) — оригинальные статьи по KBC (docs/origins) и
Python-решатель D2Q9 KBC-N1 с AMR 2x и SDF+Bouzidi (docs/theory).
В решателе перед коммитом исправлены дефекты, найденные сверкой с
первоисточниками: относительный порог знаменателя энтропийного стабилизатора
(абсолютный вырождал KBC в LBGK на 77-99% узлов), заворот вход/выход в углах
домена, диагностика средней плотности по фиктивным узлам тела, зашитый
refine=2. Подробности — docs/theory/solver_2x_sdf/README.md.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>