-
-
Notifications
You must be signed in to change notification settings - Fork 1
Implementation Status
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| core/ | lpl-core |
Platform types, assertions, logging | β 100% | C++23, -fno-rtti, -fno-exceptions
|
| math/ | lpl-math |
Vec3, Quat, Fixed32, CORDIC, BoundaryBox | β 100% | CUDA-compatible via LPL_HD
|
| memory/ | lpl-memory |
PinnedAllocator (CUDA zero-copy fallback) | β 100% |
cudaHostAlloc mapped+portable, malloc/free fallback |
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| container/ | lpl-container |
FlatAtomicsHashMap (lock-free, wait-free get) | β 100% | 64-bit packed [Morton 42b | pool idx 22b], forEach safe under lock |
| container/ | lpl-container |
Morton 2D/3D encoding + bias | β 100% | Z-order curve, part1by1/part1by2 bit-interleave, +2Β²β° bias |
| concurrency/ | lpl-concurrency |
ThreadPool (fixed workers, detach/async) | β 100% | β |
| concurrency/ | lpl-concurrency |
SpinLock (RAII, _mm_pause) |
β 100% | β |
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| ecs/ | lpl-ecs |
EntityRegistry (sparse set + generational IDs) | β 100% | publicIdβchunk O(1) |
| ecs/ | lpl-ecs |
Partition β SoA double buffer, physics, migration | β 100% | Backward iteration fixed |
| ecs/ | lpl-ecs |
Dynamic Octree (rebuild + query) | β 80% | Not auto-called in step() |
| physics/ | lpl-physics |
WorldPartition (chunk orchestrator, double buffer) | β 100% | β |
| physics/ | lpl-physics |
AABB Collision (impulse, iterative solver) | β 90% | 4 iterations, auto wake |
| gpu/ | lpl-gpu |
CUDA physics kernels | β 100% |
PhysicsKernel.cu ported, semi-implicit Euler, inline stubs without nvcc |
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| net/ | lpl-net |
Network (driver + socket fallback + PacketQueue) | β 100% | Tri-mode transport |
| net/ | lpl-net |
SessionManager + Systems | β 100% | β |
| input/ | lpl-input |
InputManager (keys, axes, neural per entity) | β 100% | Shared srv/cli logic |
| platform/ | lpl-platform |
HW backends (clock/display/gpu-memory/input) | π Interfaces | linux + kernel backends |
| serial/ | lpl-serial |
State serialization & deterministic replay | π Partial |
StateSnapshot + ISerializable; Recorder/Player stubs |
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| render/ | lpl-render |
Software rasterizer + Vulkan backend (IRenderer) |
π 90% | RenderParity, PBR, foveated, ray tracer; ImGui integrated |
| image/ | lpl-image |
2D software imaging (Surface, Painter, Codec) | π Partial | GPU-free frame/texture production |
| scene/ | lpl-scene |
Scene graph (Scene, Transform2D) | π Partial | β |
| audio/ | lpl-audio |
Spatial audio | β¬ Stub | HRTF @todo |
| haptic/ | lpl-haptic |
Haptic/vestibular feedback | β¬ Stub | Actuator mapping @todo |
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| bench/ | lpl-bench |
Benchmark harness (Harness, SystemInfo) | β 100% | mean/min/p99/variance, real-time budget classes |
| Module | Feature | Status | Notes |
|---|---|---|---|
| kernel/ | Netfilter hook + RX/TX ring buffers + mmap | β 100% | Bidirectional, 0% loss |
| kernel/ | lpl_protocol structures (C-compatible) | β 100% | ioctl kick TX |
| Module | Target | Feature | Status | Notes |
|---|---|---|---|---|
| bci/ | lpl-bci |
OpenBCIDriver β USB-serial, ring buffer, 8 channels | β 100% | 33-byte packets, 24-bit ADS1299 sign extension, EMA smoothing |
| bci/ | lpl-bci |
Per-channel FFT (Hann, 256 pts) | β 100% | PSD stored per channel, alpha/beta band extraction |
| bci/ | lpl-bci |
SignalMetrics β Schumacher |
β 100% | discrete hz_to_bin, mean + Ο; 12 tests β
|
| bci/ | lpl-bci |
RiemannianGeometry β |
β 100% | SPD covariance (Bessel), affine-invariant matrix_inv; 12 tests β
|
| bci/ | lpl-bci |
NeuralMetrics β from_state(), muscle_alert | β 100% | baseline normalisation, muscle_alert threshold |
| bci/ | lpl-bci |
Calibration β rest-phase baseline | π In progress | ~30 s rest β baseline_R, Ο |
| bci/ | lpl-bci |
BrainFlow / LSL / OpenViBE sources | π Unblocked | Now packaged in official xmake-repo |
| Executable | Target | Feature | Status | Notes |
|---|---|---|---|---|
| Server | lpl-server |
Core + Systems + broadcast 60Hz | β 100% | apps/server/main.cpp |
| Client | lpl-client |
Core + Systems + Vulkan + BCI | π 90% | apps/client/main.cpp |
| Benchmark | lpl-benchmark |
CPU benchmark suite | β 100% | apps/benchmark/main.cpp |
Foundation (core, math, memory): 100% β
Data structures (container, concurrency): 100% β
Simulation (ecs, physics, gpu): ~95% β Octree at 80%
I/O (net, input, serial): ~65% β server meshing, GPUDirect RDMA
Presentation (render, audio, haptic): ~30% β Vulkan at 90%, stubs for audio/haptic
BCI: ~70% β Core DSP complete, external source integrations excluded
Applications: ~97% β Client at 90%
Estimated weighted score: ~80% of target architecture
Ideas and features that are designed but not yet complete. Several already have a stub or an in-progress implementation in the tree; the rest are planned directions kept here so the intent is not lost.
| Feature | State | Notes |
|---|---|---|
| Server Meshing | π Stub (net/ServerMesh) |
Multi-server worlds, one chunk = one migratable unit. Remaining: serialize entity data to a target node, mesh heartbeat/registration. |
| Rollback netcode | π Stub (net/netcode/RollbackStrategy) |
Circular buffer of serialized state snapshots for client-side rollback/reconciliation. |
| Session RCU | π Planned |
SessionManager moves to Read-Copy-Update semantics for lock-free concurrent reads during broadcast. |
| GPUDirect RDMA | β¬ Idea | Zero-copy GPUβNIC transfer. Requires specific hardware. |
| Packet compression | β¬ Idea | Protocol is already variable-length, so compression can be layered on top. |
| Feature | State | Notes |
|---|---|---|
| Auto-calibration | π In progress (bci/calibration/) |
~30 s rest phase β per-subject baseline_R and Ο used to normalize metrics. |
| Visual/neuro feedback loop | β¬ Idea | Close the loop: simulation reacts to NeuralMetrics (concentration, muscle alert) in real time. |
| External sources (BrainFlow / LSL / OpenViBE) | π Unblocked | Packages now merged into the official xmake-repo; sources can be enabled once wired in. |
| Feature | State | Notes |
|---|---|---|
| Octree auto-integration | π 80% |
FlatDynamicOctree is built per Partition but updateSpatialIndex() is not yet called automatically in step(). |
| Dirty-list component tracking | β¬ Idea | Track which entities the network touched so the GPU only recomputes what changed (finer than the current full pass). |
| Convex collision (GJK / SAT) | β¬ Stub (physics/CollisionDetector) |
Beyond AABB: GJK for convex hulls, SAT for OBB vs OBB. |
| Replay record/playback | π Stub (serial/ReplayRecorder/ReplayPlayer) |
Serialize frames + snapshots to disk, seek by tick, replay forward. |
| Spatial audio | β¬ Stub (audio/) |
HRTF listener positioning, distance attenuation. |
| Haptic / vestibular feedback | β¬ Stub (haptic/) |
Map world position to nearest actuator and modulate intensity (GVS, tFUS). |
β Performance Results | Next: Executables β
LplPlugin β Zero-Copy Real-Time VR Engine | Author: MasterLaplace | License: GPL-3.0 | Source Code
This project is a marathon, not a sprint.