evan 2026.1.4
Evan
Loading...
Searching...
No Matches
Evan Architecture

Evan is split into a small set of runtime layers so rendering code, platform code, and engine content stay separated.

Module Layout

graph TD
Engine[Engine] --> Platform[Platform]
Engine --> Device[DeviceContext]
Engine --> Swapchain[SwapchainContext]
Engine --> Renderer[Renderer]
Renderer --> RenderObject[RenderObject]
RenderObject --> GPUMesh[GPUMesh]
Renderer --> MaterialManager[RessourceManager]
MaterialManager --> GPUMaterial[GPUMaterial]
Platform --> Backend[Backend: OpenXR / GLFW]
  • Engine owns the frame loop and coordinates update, draw, and present.
  • Platform abstracts the target backend (OpenXR or GLFW) and platform.
  • Device & swapchain manage Vulkan resources and frame ownership.
  • Renderer owns the registry of render objects and their GPU meshes, and draws them each frame; GPU materials are managed by the RessourceManager.

Frame Lifecycle

sequenceDiagram
participant Engine
participant Platform
participant Device as DeviceContext
participant Renderer
loop each frame
Engine->>Platform: poll events
Engine->>Engine: update state
Engine->>Renderer: drawFrame(render objects)
Engine->>Device: record command buffers
Engine->>Platform: present image
end

Build Variants

  • BUILD_FOR_GLFW enables desktop platform support.
  • BUILD_FOR_OPENXR enables XR support.
  • Android-specific paths are enabled when the selected platform is Android.

Design Goal

Keep the engine low-level enough for performance while still exposing a straightforward application lifecycle to the higher layers.