# Fan Engine A minimal 3D renderer written in C++ and OpenGL 3.3 Core. > **_NOTE_:** The engine is still in development. Expect breaking changes. ## Building The only tested platform at the moment is **GNU/Linux** (x86_64). To build the project **you'll need to have GLFW already installed system-wide**, the rest of the dependencies are already included. After that, building comes down to just running the included Makefile. ```console $ mkdir build $ make # optionally pass -j$(nproc) ``` ## Features This is the current state of the engine architecture: ```mermaid flowchart TB subgraph Infrastructure["Infrastructure"] direction LR subgraph Platform direction TB Window --> GLFW Window --> glad Window --> ImGui["Dear ImGui"] end subgraph Loading direction TB Loader --> tinyobjloader Loader --> stb_image end end subgraph Application direction LR Framebuffer Renderer --> Camera Renderer --> Scene Renderer -->|Updates| UniformBuffer end subgraph World direction LR subgraph SceneGraph["Scene Graph"] direction TB Scene --> Entity Entity --> Transform Entity --> Mesh Entity -.->|Optional override| Material Mesh -->|Partitions| SubMesh SubMesh -->|Owns| Material end subgraph Lighting direction TB Scene --> LightEnvironment LightEnvironment --> DirectionalLight LightEnvironment --> PointLight LightEnvironment --> SpotLight end end subgraph SceneData["Scene Data"] direction LR subgraph Geometry direction TB Mesh --> Vertices Mesh --> Indices end subgraph Resources direction TB Material --> Shader Material --> Texture UniformBuffer -->|Global data| Shader end end tinyobjloader -->|Generates| Entity Texture -.->|Decodes via| stb_image classDef application fill:#7c3aed,stroke:#4c1d95,color:#fff classDef world fill:#2563eb,stroke:#1e3a8a,color:#fff classDef data fill:#0f766e,stroke:#134e4a,color:#fff classDef loading fill:#d97706,stroke:#92400e,color:#fff classDef platform fill:#64748b,stroke:#334155,color:#fff class Renderer,Scene,Camera,Framebuffer application class Entity,Transform,Mesh,SubMesh,Material,LightEnvironment world class UniformBuffer,Shader,Texture,Vertices,Indices,DirectionalLight,PointLight,SpotLight data class Loader,tinyobjloader,stb_image loading class Window,GLFW,glad,ImGui platform ```