Было сказано «около сорока строк вызовов» на глаз. Счёт по одним и тем же
модулям (Context и Swapchain целиком, код без пустых и комментариев) даёт
301 строку в C++ против 606 в порте.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Условия, цифры и разбор по коду. Замеры на одной машине подряд: сборка (полная,
тёплая, инкрементальная — в release и debug), размеры бинарей и каталогов, состав
и объём зависимостей, старт до готовности рендерера, процессорное время при 60 Гц,
строки по модулям одинаковыми правилами для обеих версий.
Главные наблюдения:
* инкрементальная release-сборка Rust 52 с против 4.4 с — это цена thin LTO, а не
языка: со сравнимым уровнем оптимизации 5.5 с против 4.4 с;
* FetchContent клонирует 775 МБ истории на каждый каталог сборки и не имеет общего
кэша; 76 крейтов Rust занимают 80 МБ в общем реестре;
* загрузчики .obj сходятся на cow.obj точно и расходятся на plane.obj на 0.13%
треугольников — из-за разной триангуляции многоугольников с n >= 5.
Плюс четыре дефекта C++-версии, найденных при переносе, в том числе строка
«Mesh ready», которую троттлинг категории MeshIO отбрасывает всегда: счётчики после
сварки не печатались никогда.
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>