-
Notifications
You must be signed in to change notification settings - Fork 0
Project Structure
Yahasi edited this page Jul 10, 2026
·
3 revisions
🌐 English · Русский
The solution has three projects. A hard architecture rule keeps the engine dependency-free: all GPU / ILGPU code lives in a separate project.
-
Nova3DVisualiser/— the engine (library): vector math, shapes, raytracing, the colored-lighting pipeline, truecolor screen output, BVH, OBJ/mesh loading, networking, logging. It is dependency-free — no ILGPU, no UI toolkit, no third-party packages. -
Nova3DVisualiser.Gpu/— the optional GPU renderer (depends on the engine + ILGPU). Keeps the heavy GPU dependency out of the engine; providesGpuScreen, the NVIDIA/CUDA raytracing kernel, and the flat scene-snapshot upload. See GPU Renderer. -
SampleGame/— the runnable application: the setup wizard, the world system, the in-scene editor, the networking host, and the mesh/texture asset libraries.
| Folder | Contents |
|---|---|
AbstractClass/ |
Core abstractions — e.g. Light (the multi-light system). |
Shape/ |
Geometry — triangles, spheres, meshes, BVH. |
Structure/ |
Value types — Rgb24, Rgba32, Texture, the scene snapshot, etc. |
Implementation/ |
Concrete renderers — ConsoleScreenAsync (truecolor diff renderer). |
StaticClass/ |
Helpers — colour conversion, math. |
Network/ |
The TCP networking core. |
Logging/ |
Timestamped file logging. |
Interfaces/, UI/
|
Engine interfaces and console UI primitives. |
| Folder | Contents |
|---|---|
WizardUi/ |
The setup-wizard console-UI toolkit (keyboard + mouse, no external UI library) — the diff renderer, widgets, layout/focus, and the wizard flow. Guarded by uitest. |
WorldSystem/ |
The world model (WorldConfig and friends) — graphics / platform / objects / lights / physics. |
Physics/ |
The impulse-based rigid-body solver (RigidBody / Contact / ImpulseWorld), the joints (Joint / JointBuilder), and convex-hull collision (ConvexHull / Gjk), plus the extracted pure math helpers. See Physics. |
TextureIO/ |
The PNG decoder and texture-loader cache (kept separate from the textures/ asset folder). See Textures. |
Scenes/ |
The active scene PriviewNetworkScene, split across per-responsibility partial-class files, plus camera math. |
NetworkPackets/ |
The packet types for world / physics / texture sync. |
models/ |
The .obj mesh library. |
textures/ |
The .png texture library. |
worlds/ |
The saved worlds (<name>.json). |
received/ |
Assets streamed from a server (meshes, textures). |
logs/ |
Timestamped run logs. |
The whole thing is guarded by a headless self-test suite (physics, world sync, editor, textures, and CPU↔GPU parity). The engine's dependency-free rule is enforced by keeping every GPU/ILGPU reference in Nova3DVisualiser.Gpu/.