2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00
2026-09-27 01:33:35 +02:00

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.

$ mkdir build
$ make # optionally pass -j$(nproc)

Features

This is the current state of the engine architecture:

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
Description
A minimal 3D renderer written in C++ and OpenGL 3.3 Core
Readme MIT 168 MiB
Languages
C++ 90.2%
GLSL 5.1%
Python 2.8%
Makefile 1.9%