# Fan Engine A minimal 3D renderer written in C++ and OpenGL 3.3 Core. > **_NOTE_:** The engine is still in heavy development. Expect breaking changes. ## Building The only tested platform at the moment is **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 Application Renderer Scene Camera Framebuffer end subgraph World Entity Transform Mesh Material LightEnvironment end subgraph SceneData["Scene Data"] Vertices Indices Shader Texture DirectionalLight PointLight SpotLight end subgraph Loading Loader tinyobjloader stb_image end subgraph Platform Window GLFW glad ImGui["Dear ImGui"] end Renderer --> Scene Renderer --> Camera Scene --> Entity Scene --> LightEnvironment Entity --> Transform Entity --> Mesh Entity --> Material Mesh --> Vertices Mesh --> Indices Material --> Shader Material --> Texture LightEnvironment --> DirectionalLight LightEnvironment --> PointLight LightEnvironment --> SpotLight Loader --> tinyobjloader tinyobjloader --> Entity Texture --> stb_image Window --> GLFW Window --> glad Window --> ImGui 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,Material,LightEnvironment world class Vertices,Indices,Shader,Texture,DirectionalLight,PointLight,SpotLight data class Loader,tinyobjloader,stb_image loading class Window,GLFW,glad,ImGui platform ```