Initial commit

This commit is contained in:
2026-09-27 01:33:35 +02:00
commit 3ac329a21b
1185 changed files with 543634 additions and 0 deletions

107
README.md Normal file
View File

@@ -0,0 +1,107 @@
# Fan Engine
<img src="./assets/logo/logo.png" width="64"/>
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
```