# hans-chrstn/signum-engine architecture

> Architecture diagram of the GitHub repository hans-chrstn/signum-engine, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hans-chrstn/signum-engine
- Repository: https://github.com/hans-chrstn/signum-engine

## Overview

Signum Engine is an actively developed C++ game engine centered on Vulkan, with an editor and a playground executable. The main workflow is an application starting its platform window and renderer, then submitting frames for rendering and presentation; the editor adds workspace panels and scene-view camera controls. The tree also shows geometry, materials, shaders, textures, and Vulkan resource-management stages. Most connections beyond the documented application-to-renderer boundary are uncertain: source excerpts are limited, and the README notes that many engine features are not yet implemented.

Main entry points: [`src/engine/renderer/vulkan/vulkan_renderer.cpp`](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/vulkan_renderer.cpp) (Vulkan Renderer), [`src/engine/core/application.cpp`](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/application.cpp) (Application Runtime), [`editor/editor_workspace.cpp`](https://github.com/hans-chrstn/signum-engine/blob/main/editor/editor_workspace.cpp) (Editor Workspace), [`src/engine/renderer/vulkan/pipeline/vulkan_graphics_pipeline.cpp`](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/pipeline/vulkan_graphics_pipeline.cpp) (Graphics Pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_apps["Applications"]
  node_editor["Editor Workspace"]
  node_editor_ui["Editor Panels"]
  node_camera_control["Scene Camera"]
  node_playground["Playground App<br/>[main.cpp]"]
  node_app_entry["Engine Entry<br/>[main.cpp]"]
end

subgraph group_core["Engine Core"]
  node_application["Application Runtime<br/>[application.cpp]"]
  node_window["Window &amp; Input<br/>[window.hpp]"]
  node_diagnostics["Errors &amp; Assertions<br/>[engine_error.cpp]"]
  node_math["Math Primitives<br/>[matrix4.hpp]"]
end

subgraph group_render["Rendering"]
  node_geometry["Mesh Geometry"]
  node_materials["Materials &amp; Lighting"]
  node_shaders["Shader Inputs"]
  node_shader_compiler["Shader Compiler"]
  node_textures["Texture Loading<br/>[image_loader.cpp]"]
end

subgraph group_backend["Vulkan Backend"]
  node_renderer["Vulkan Renderer"]
  node_pipeline["Graphics Pipeline"]
  node_gpu_resources["GPU Resources"]
  node_presentation["Swapchain &amp; Presentation"]
end

node_user(("User"))
node_vulkan(("Vulkan API"))
node_glfw(("GLFW"))

node_user -.->|"uses"| node_editor
node_editor -.->|"shows"| node_editor_ui
node_editor -.->|"uses"| node_camera_control
node_user -.->|"runs"| node_playground
node_app_entry -.->|"starts"| node_application
node_editor -.->|"uses"| node_application
node_playground -.->|"uses"| node_application
node_application -->|"owns"| node_window
node_application -->|"forwards frames"| node_renderer
node_window -.->|"uses"| node_glfw
node_renderer -.->|"draws"| node_geometry
node_renderer -.->|"uses"| node_materials
node_renderer -.->|"uses"| node_textures
node_renderer -.->|"creates"| node_pipeline
node_pipeline -->|"consumes"| node_shaders
node_shader_compiler -.->|"produces"| node_shaders
node_renderer -.->|"manages"| node_gpu_resources
node_renderer -.->|"presents"| node_presentation
node_pipeline -.->|"uses"| node_vulkan
node_math -->|"checks contracts"| node_diagnostics

click node_editor "https://github.com/hans-chrstn/signum-engine/blob/main/editor/editor_workspace.cpp"
click node_editor_ui "https://github.com/hans-chrstn/signum-engine/tree/main/editor/panels"
click node_camera_control "https://github.com/hans-chrstn/signum-engine/blob/main/editor/scene_view/scene_view_camera_controller.cpp"
click node_playground "https://github.com/hans-chrstn/signum-engine/blob/main/playground/main.cpp"
click node_app_entry "https://github.com/hans-chrstn/signum-engine/blob/main/src/main.cpp"
click node_application "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/application.cpp"
click node_window "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/platform/window.hpp"
click node_diagnostics "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/error/engine_error.cpp"
click node_math "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/math/matrix4.hpp"
click node_geometry "https://github.com/hans-chrstn/signum-engine/tree/main/src/engine/renderer/geometry"
click node_materials "https://github.com/hans-chrstn/signum-engine/tree/main/src/engine/renderer/material"
click node_shaders "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/shader/graphics_shader_data.hpp"
click node_shader_compiler "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/shader/shader_source_compiler.cpp"
click node_textures "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/texture/image_loader.cpp"
click node_renderer "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/vulkan_renderer.cpp"
click node_pipeline "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/pipeline/vulkan_graphics_pipeline.cpp"
click node_gpu_resources "https://github.com/hans-chrstn/signum-engine/tree/main/src/engine/renderer/vulkan/memory"
click node_presentation "https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/presentation/vulkan_swapchain.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_editor,node_editor_ui,node_camera_control,node_playground,node_app_entry,node_user toneBlue
class node_application,node_window,node_diagnostics,node_math toneAmber
class node_geometry,node_materials,node_shaders,node_shader_compiler,node_textures,node_vulkan toneMint
class node_renderer,node_pipeline,node_gpu_resources,node_presentation toneRose
class node_glfw toneIndigo
```

## Components

### Applications

- [Editor Workspace](https://github.com/hans-chrstn/signum-engine/blob/main/editor/editor_workspace.cpp): `editor/editor_workspace.cpp`
- [Editor Panels](https://github.com/hans-chrstn/signum-engine/tree/main/editor/panels): `editor/panels`
- [Scene Camera](https://github.com/hans-chrstn/signum-engine/blob/main/editor/scene_view/scene_view_camera_controller.cpp): `editor/scene_view/scene_view_camera_controller.cpp`
- [Playground App](https://github.com/hans-chrstn/signum-engine/blob/main/playground/main.cpp): `playground/main.cpp`
- [Engine Entry](https://github.com/hans-chrstn/signum-engine/blob/main/src/main.cpp): `src/main.cpp`

### Engine Core

- [Application Runtime](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/application.cpp): `src/engine/core/application.cpp`
- [Window & Input](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/platform/window.hpp): `src/engine/platform/window.hpp`
- [Errors & Assertions](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/error/engine_error.cpp): `src/engine/core/error/engine_error.cpp`
- [Math Primitives](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/core/math/matrix4.hpp): `src/engine/core/math/matrix4.hpp`

### Rendering

- [Mesh Geometry](https://github.com/hans-chrstn/signum-engine/tree/main/src/engine/renderer/geometry): `src/engine/renderer/geometry`
- [Materials & Lighting](https://github.com/hans-chrstn/signum-engine/tree/main/src/engine/renderer/material): `src/engine/renderer/material`
- [Shader Inputs](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/shader/graphics_shader_data.hpp): `src/engine/renderer/shader/graphics_shader_data.hpp`
- [Shader Compiler](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/shader/shader_source_compiler.cpp): `src/engine/renderer/shader/shader_source_compiler.cpp`
- [Texture Loading](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/texture/image_loader.cpp): `src/engine/renderer/texture/image_loader.cpp`

### Vulkan Backend

- [Vulkan Renderer](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/vulkan_renderer.cpp): `src/engine/renderer/vulkan/vulkan_renderer.cpp`
- [Graphics Pipeline](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/pipeline/vulkan_graphics_pipeline.cpp): `src/engine/renderer/vulkan/pipeline/vulkan_graphics_pipeline.cpp`
- [GPU Resources](https://github.com/hans-chrstn/signum-engine/tree/main/src/engine/renderer/vulkan/memory): `src/engine/renderer/vulkan/memory`
- [Swapchain & Presentation](https://github.com/hans-chrstn/signum-engine/blob/main/src/engine/renderer/vulkan/presentation/vulkan_swapchain.cpp): `src/engine/renderer/vulkan/presentation/vulkan_swapchain.cpp`

### Other components

- **User**
- **Vulkan API**
- **GLFW**

## Connections

- User → Editor Workspace: uses
- Editor Workspace → Editor Panels: shows (evidence: `editor/editor_workspace.cpp`)
- Editor Workspace → Scene Camera: uses
- User → Playground App: runs
- Engine Entry → Application Runtime: starts
- Editor Workspace → Application Runtime: uses
- Playground App → Application Runtime: uses
- Application Runtime → Window & Input: owns (evidence: `src/engine/core/application.cpp`)
- Application Runtime → Vulkan Renderer: forwards frames
- Window & Input → GLFW: uses
- Vulkan Renderer → Mesh Geometry: draws
- Vulkan Renderer → Materials & Lighting: uses
- Vulkan Renderer → Texture Loading: uses
- Vulkan Renderer → Graphics Pipeline: creates
- Graphics Pipeline → Shader Inputs: consumes (evidence: `src/engine/renderer/vulkan/pipeline/vulkan_graphics_pipeline.cpp`)
- Shader Compiler → Shader Inputs: produces
- Vulkan Renderer → GPU Resources: manages
- Vulkan Renderer → Swapchain & Presentation: presents
- Graphics Pipeline → Vulkan API: uses
- Math Primitives → Errors & Assertions: checks contracts (evidence: `src/engine/core/math/matrix4.hpp`)
