110 lines
2.3 KiB
Markdown
110 lines
2.3 KiB
Markdown
# 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.
|
|
|
|
<img src="./assets/preview.png" width="600">
|
|
|
|
## 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
|
|
```
|