Skip to content

Latest commit

 

History

80 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lucida Engine

lucida - the brightest star in a constellation.

Licence: GPL-3.0-or-later C++20 Platforms Renderer CI Multi-Platform Matrix

Discord Telegram YouTube


Overview

Lucida - The new era of game engine

Lucida is a next-generation real-time ray tracing game engine engineered from first principles for deterministic Whitted ray tracing, Radiance Cascades Global Illumination, and Data-Oriented Design (DOD).

Built to deliver high visual fidelity, real-time procedural materials, active physical ragdolls, and hardware-accelerated temporal upscaling without relying on expensive dedicated RT cores.


Showcase

Lucida Engine Renderer Full RT

Lucida Engine Renderer Full RT

Lucida Engine Renderer Full RT

Lucida Engine 0.6.5

Lucida Engine 0.5

Lucida Engine 0.3(2)

Lucida Engine 0.2(2)


Performance

Tested on MacBook Pro 16" 2019 (Intel i9-9880H, AMD Radeon Pro 5500M 8 GB - compute-only, no RT hardware):

Scene Resolution Pipeline Frame rate
Sponza (~5.7 M triangles) 1080x720 Full RT 15-30 fps
Demo Scene (primitives, water, fog) 1920x1080 Full RT 60-110 fps

Tracing is deterministic Whitted-style with analytic soft shadows and AO. No stochastic noise, no accumulation ghosting, and no temporal blur.


Build

Dependencies are fetched by CMake at configure time (glm, bvh v2, Dear ImGui, ImGuiFileDialog, stb, Jolt, EnTT). System SDL2 and assimp are used when present.

cmake -B build
cmake --build build -j
./build/lucida_sandbox

Platforms

Platform Architecture Renderer Status
macOS 13+ x86_64 / arm64 Metal + MetalFX Complete
macOS 13+ Universal Metal + MetalFX LUCIDA_MACOS_UNIVERSAL=ON
Linux (Ubuntu/Debian) x86_64 / arm64 OpenGL 4.3 Compute In progress
Windows 10+ x86_64 / arm64 Vulkan Compute In progress
# Ubuntu / Debian
sudo apt install build-essential cmake ninja-build libsdl2-dev libassimp-dev
cmake -B build -G Ninja && cmake --build build -j

# Windows (MSVC x64)
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config RelWithDebInfo

Controls & Shortcuts

Keys / Mouse Action
RMB + Mouse Fly camera look-around (cursor captured)
RMB + W A S D Fly camera movement in 3D space
RMB + Q / E Fly camera down / up
Shift + MMB Pan camera in viewport (Blender style)
MMB Drag Orbit camera around selected entity
3D Orientation Gizmo Drag top-right sphere to orbit or click axes for orthographic views
RMB + Shift Camera sprint fly mode (3.0x speed)
RMB + Scroll Dynamically adjust camera fly speed
F Frame and focus camera on selection
1 / 2 / 3 (or T / R / S) Switch Gizmo mode (Translate / Rotate / Scale)
A Select all entities in scene
Alt + A Deselect all entities
Shift + Click Multi-selection toggle
Cmd+G (Ctrl+G) Group selected entities
Cmd+Alt+G (Ctrl+Alt+G) Ungroup selected group
Cmd+J (Ctrl+J) Join selected meshes into single entity
Tab Toggle Object Mode / Mesh Edit Mode
Cmd+Z (Ctrl+Z) Global Undo (Transforms, Materials, Hierarchy, Mesh edits)
Cmd+Shift+Z / Cmd+Y Global Redo
Cmd+D (Ctrl+D) Duplicate selection
Delete / Backspace Delete selection (undoable)
Cmd+P (Ctrl+P) Play / Stop simulation with state restoration
F11 Toggle Fullscreen

Multi-Language UI (Localization)

Lucida includes a built-in localization subsystem with on-the-fly language switching from the top menu bar (Language menu):

Language Code Status
English en Default
Ukrainian (Українська) uk Complete
German (Deutsch) de Complete
French (Français) fr Complete
Spanish (Español) es Complete
Russian (Русский) ru Complete

All editor panels, toolbars, tooltips, dialogs, and hierarchy controls update instantly at runtime without restarting the engine.


Core Engine Architecture

  • Deterministic Compute Ray Tracer: Metal compute pipeline with analytic soft shadows, directional sun, screen-space / ray-traced AO, trochoidal water simulation, and volumetric fog.
  • Hardware Upscaling: Sub-pixel Halton jittering with per-instance Motion Vectors and Apple MetalFX Temporal AA.
  • Blender-Style Mesh Editor: Vertex, Edge, and Face level modeling with Extrude, Inset, Subdivide, Normal recalculation, and UV projection.
  • Jolt Physics Integration: Rigid bodies (Dynamic, Static, Kinematic), character virtual controllers, raycast queries, and collision shapes.
  • Play Mode State Snapshots: Non-destructive ECS snapshots restoring transform trees and velocities on simulation exit.
  • Modular Editor UI: Split architecture (EditorViewport, EditorInspector, EditorHierarchy, EditorConsole, EditorTextureBrowser, EditorMeshModeling) under 600 lines per module.
  • Vector-Based UI & Animations: Resolution-independent vector iconography via ImDrawList and tween-interpolated buttons powered by ImAnim.
  • Scene Hierarchy & Graph Operations: Multi-selection, parent-child transform propagation, grouping/ungrouping, mesh joining, and CSG Boolean modifiers (Union, Difference, Intersection).
  • 3D Viewport Visualizers: Omni light influence spheres, sun directional arrows, spot cones, camera frustum pyramids, and 8-point corner bounds.
  • PBR Material System: Albedo, Roughness, Metallic, Normal Maps, Emission, and Index of Refraction presets with GPU cache management.

Directory Layout

Lucida/
├── cmake/             Dependency configuration
├── engine/
│   ├── core/          Math, ECS (EnTT), memory, events, logging
│   ├── runtime/       Fixed-step loop, World, gameplay systems, particles
│   ├── render/        Camera, mesh data, IRenderBackend interface
│   ├── resource/      Model loader, mesh builder, textures, terrain, prefabs
│   ├── physics/       IPhysicsBackend interface
│   ├── audio/         Audio system and components
│   ├── animation/     Skeletal animation and skinning
│   └── input/         Action-based HID abstraction
├── backends/
│   ├── render_metal/  Metal compute ray tracer and MetalFX
│   ├── platform_sdl2/ Window, input, surface host
│   └── physics_jolt/  Jolt physics backend
├── framework/         Editor UI modules, camera controller, gizmos, theme
└── apps/sandbox/      Main engine sandbox and project loader

Reference Foundations

Engine implementation follows core principles from primary literature:

  • Gregory, Game Engine Architecture (3rd ed., 2018) - Layering model and subsystem design.
  • Nystrom, Game Programming Patterns (2014) - Command, Observer, Service Locator, Component patterns.
  • Fabian, Data-Oriented Design (2018) - Structure of Arrays and cache-coherent ECS.
  • Akenine-Moeller et al., Real-Time Rendering (4th ed., 2018) - Two-level BVH, Radiance Cascades, PBR derivation.
  • Pharr et al., Physically Based Rendering (4th ed., 2023) - Deterministic transport correctness.

Licence

Lucida Engine is free software under the GNU General Public License v3.0 or later - see LICENSE. You may use, study, modify and redistribute it; derived works that you distribute must carry the same freedoms.

Every dependency is permissively licensed (MIT, BSD-3, Zlib) and fetched at configure time rather than vendored. The full list, with licences and GPL compatibility notes, is in THIRD-PARTY.md.

Copyright (C) 2026 BlackLine Interactive

Follow the work

Development notes, builds and breakdowns:

Telegram YouTube Discord

Issues and pull requests are welcome. If you are opening a pull request, read docs/ARCHITECTURE.md first - the dependency rules there are enforced by CMake, and a change that breaks them will not link.