Module-level technical reference for the Master of Puppets engine. Each page documents the contract, types, and implementation details for one subsystem.
Modules
| Module | Source | Description |
|---|---|---|
| API Contracts | include/mop/*.h | Public function preconditions and postconditions |
| RHI | src/rhi/ | Render hardware interface abstraction |
| Math | src/math/ | Vector and matrix operations |
| Viewport Core | src/core/ | Scene management and render orchestration |
| Light System | src/core/light.c | Multi-light shading and light indicators |
| Input / Events | src/interact/input.c | Interaction state machine and event system |
| Gizmo | src/interact/gizmo.c | TRS manipulation handles |
| Camera | src/interact/camera.c | Orbit camera (pan, zoom, orbit, move) |
| Camera Query | src/query/camera_query.c | Camera state snapshot and ray generation |
| Overlay | src/core/overlay.c | Built-in and custom rendering overlays |
| Display | src/core/display.c | Wireframe, normals, bounds visualization |
| Picking | (cross-cutting) | Object-ID buffer picking system |
| Software Rasterizer | src/rasterizer/ | Shared software rasterization |
| CPU Backend | src/backend/cpu/ | CPU backend (delegates to rasterizer) |
| OpenGL Backend | src/backend/opengl/ | OpenGL 3.3 core backend (contract) |
| Vulkan Backend | src/backend/vulkan/ | Vulkan 1.0 headless backend |
| Material System | include/mop/material.h | PBR-inspired material descriptor |
| Vertex Format | src/core/vertex_format.c | Flexible vertex attributes |
| Loader | src/loader/ | OBJ and binary .mop mesh loading |
| Query | src/query/query.c | Read-only mesh introspection |
| Snapshot | src/query/snapshot.c | Zero-copy scene iteration |
| Spatial | src/query/spatial.c | AABB, frustum culling, raycasting |
| Undo / Redo | src/interact/undo.c | Transform history stack |
| Pipeline Hooks | src/core/viewport.c | Custom render pass injection |
| Particle System | src/subsystem/particle.c | Emitters, presets, billboard rendering |
| Water Surface | src/subsystem/water.c | Procedural sine-wave animation |
| Post-Processing | src/subsystem/postprocess.c | Gamma, tonemapping, vignette, fog |
| Configuration | src/config/config.c | Optional Lua configuration |
| Logging | src/util/log.c | Log levels, callbacks, macros |
| Profiling | src/util/profile.c | Frame timing statistics |
| Binary Format | src/loader/mop_loader.c | .mop binary mesh format specification |