-
Notifications
You must be signed in to change notification settings - Fork 0
Project Structure RU
Yahasi edited this page Jul 10, 2026
·
3 revisions
🌐 English · Русский
В решении три проекта. Жёсткое архитектурное правило держит движок без зависимостей: весь код GPU / ILGPU живёт в отдельном проекте.
-
Nova3DVisualiser/— движок (библиотека): векторная математика, фигуры, трассировка лучей, конвейер цветного освещения, truecolor-вывод в консоль, BVH, загрузка OBJ/мешей, сеть, логирование. Без зависимостей — ни ILGPU, ни UI-тулкита, ни сторонних пакетов. -
Nova3DVisualiser.Gpu/— опциональный GPU-рендерер (зависит от движка + ILGPU). Держит тяжёлую GPU-зависимость вне движка; содержитGpuScreen, ядро трассировки NVIDIA/CUDA и загрузку плоского снимка сцены. См. GPU-рендерер. -
SampleGame/— запускаемое приложение: мастер настройки, система миров, встроенный редактор сцены, сетевой хост и библиотеки ассетов (меши/текстуры).
| Папка | Содержимое |
|---|---|
AbstractClass/ |
Базовые абстракции — напр. Light (система множественного света). |
Shape/ |
Геометрия — треугольники, сферы, меши, BVH. |
Structure/ |
Типы-значения — Rgb24, Rgba32, Texture, снимок сцены и т.д. |
Implementation/ |
Конкретные рендереры — ConsoleScreenAsync (truecolor diff-рендерер). |
StaticClass/ |
Хелперы — конвертация цвета, математика. |
Network/ |
Ядро TCP-сети. |
Logging/ |
Логирование в файл с отметками времени. |
Interfaces/, UI/
|
Интерфейсы движка и консольные UI-примитивы. |
| Папка | Содержимое |
|---|---|
WizardUi/ |
Консольный UI-тулкит мастера настройки (клавиатура + мышь, без внешней UI-библиотеки) — diff-рендерер, виджеты, компоновка/фокус и поток мастера. Защищён uitest. |
WorldSystem/ |
Модель мира (WorldConfig и родственники) — графика / платформа / объекты / свет / физика. |
Physics/ |
Импульсный решатель твёрдых тел (RigidBody / Contact / ImpulseWorld), шарниры (Joint / JointBuilder) и коллизия выпуклых оболочек (ConvexHull / Gjk), плюс извлечённые чистые математические хелперы. См. Физика. |
TextureIO/ |
Декодер PNG и кэш загрузчика текстур (отдельно от папки ассетов textures/). См. Текстуры. |
Scenes/ |
Активная сцена PriviewNetworkScene, разбитая на partial-class файлы по ответственности, плюс математика камеры. |
NetworkPackets/ |
Типы пакетов для синхронизации мира / физики / текстур. |
models/ |
Библиотека мешей .obj. |
textures/ |
Библиотека текстур .png. |
worlds/ |
Сохранённые миры (<name>.json). |
received/ |
Ассеты, полученные с сервера (меши, текстуры). |
logs/ |
Логи запусков с отметками времени. |
Всё это защищено пакетом headless-самотестов (физика, синхронизация мира, редактор, текстуры и паритет CPU↔GPU). Правило «движок без зависимостей» обеспечивается тем, что каждая ссылка на GPU/ILGPU держится в Nova3DVisualiser.Gpu/.