A hobby game engine built from scratch using Vulkan.
OrangeEngine is a bare-metal game engine written in C++. This project is a work in progress — currently following the Vulkan Tutorial to get the graphics pipeline up and running.
- Vulkan instance initialization and device setup
- Vertex and fragment shader compilation via
glslc - Basic render pipeline following the Vulkan Tutorial
- GCC,
glslc(Vulkan SDK) - GLFW, Vulkan, GLM
- Make
git clone https://github.com/SirOrangePeel/OrangeEngine.git
cd OrangeEngine
./compile.sh # Compile shaders
make # Build the enginemake test
# or manually:
./VulkanTestOrangeEngine/
├── shaders/
│ ├── shader.frag # Fragment shader (GLSL)
│ └── shader.vert # Vertex shader (GLSL)
├── src/
│ └── main.cpp # Engine entry point
├── .gitignore
├── compile.sh # Shader compilation script
└── Makefile
- Instance, device & queue setup
- Window surface & swap chain
- Image views & render pass
- Graphics pipeline & shader stages
- Framebuffers & command buffers
- Rendering & presentation
- Vertex buffers
- Index buffers
- Uniform buffers & descriptor sets
- Texture mapping & samplers
- Depth buffering
- Loading 3D models (OBJ/glTF)
- Mipmapping
- Multisampling (MSAA)
- Scene graph
- Entity-Component System (ECS)
- Asset manager
- Camera & input system
- Deferred rendering
- Shadow mapping
- Post-processing effects
- Physically Based Rendering (PBR)
- Audio system
- Scripting layer
- Editor / tooling