NotBigGhostandClaude Opus 5 26a8475396 Снять предел GPU на размер сетки и молчаливые подмены модели стенки
Диспетчеризация была одномерной, а у GPU жёсткий предел 65535 рабочих групп
на измерение: при 64 узлах на группу это упирало сетку в 4.2 млн узлов, то
есть примерно 2048×2048. Всё, что крупнее, не считало медленно, а падало
ошибкой валидации — то есть вся группа сверхмелких сеток кампании (4096×2048
и 4096×4096) не запустилась бы вовсе. Теперь сетка рабочих групп двумерная, а
линейный индекс собирается в шейдере через lin()/wlin(); отображение
«группа → узлы» при этом остаётся ровно линейным, поэтому редукции и буфер
частичных сумм не потребовали изменений, кроме отсечения хвостовых групп.
Проверено до 4096×4096; паритет с CPU не сдвинулся ни в одной цифре
(Cd 2.4650 против 2.4649, как и до правки).

--wall staircase на GPU молча считался по Bouzidi: ветка выбиралась по
is_moment_based(), и ступенчатая модель попадала в ту же ветку, что
интерполированный отскок. Обнаружилось по тому, что две модели дали
побитово одинаковый Cd там, где обязаны были разойтись. Вместо булева
«третий порядок» в Dyn теперь режим стенки числом, и все четыре модели
живут на обоих бэкендах.

clap отвергал --body-angle -8 как неизвестный ключ, из-за чего не
запускался прогон на зеркальную симметрию профиля.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 17:36:18 +03:00

SimVulcan

A minimal Vulkan 1.3 / C++20 3D model editor: an orbit camera over three reference grid planes through the origin, with .obj model loading and display.

Features

  • Orbit camera — drag to rotate around the centre, wheel to zoom, and Front / Top / Side buttons to align the view to the principal planes.
  • A 3D editor space: three grid planes (XY, XZ, YZ) and coloured X/Y/Z axes meeting at the origin.
  • .obj loading with three display modes — solid (flat-shaded), wireframe, and solid + wireframe overlay.
  • ImGui interface (Viewport controls + Mesh load panel).

All Vulkan code is isolated in src/vk/; the rest of the app is Vulkan-free.

Targets

  • Windows x64 (MSVC / clang-cl)
  • Linux x64 (gcc / clang)
  • macOS arm64 (Apple Silicon, via MoltenVK)

Prerequisites

  • Vulkan SDK 1.3.290+ (https://vulkan.lunarg.com/)
  • CMake 3.26+
  • Ninja
  • C++20 compiler (MSVC 19.36+, gcc 11+, clang 14+)

Build

cmake --preset windows-msvc-release
cmake --build --preset windows-msvc-release

Run from the executable's own directory (build/<preset>/src/app/) so it finds the spirv/ and assets/ trees copied next to it.

Tests

cmake --build --preset windows-msvc-debug --target simv_tests
ctest --preset windows-msvc-debug

Layout

src/
  core/    Logger, Window, App (orchestration, Vulkan-free)
  vk/      All Vulkan: Context, Swapchain, Buffer, Image, Shader, GpuMesh,
           Renderer (frame loop + depth + ImGui), MeshRenderer, GridRenderer
  mesh/    CPU mesh: tinyobjloader + welding (no Vulkan)
  editor/  Camera, mouse input, EditorUI + MeshLoadPanel (ImGui, no Vulkan)
  app/     main.cpp
shaders/
  editor/  mesh + grid vertex/fragment shaders (GLSL → SPIR-V at build time)
tests/     Catch2 unit tests (mesh math)
S
Description
САПР с упором на вычислительную гидродинамику с KBC методом в ядре и встроенными алгоритмами автоматизации аналитического проектирования обтекаемых тел.
Readme
72 MiB
Languages
C++ 88.8%
CMake 9.2%
GLSL 1.5%
Batchfile 0.5%