A physically-based rendering (PBR) engine built in C++ using Vulkan, featuring a custom graphics pipeline framework, an entity-component-system (ECS) powered by entt, and an interactive ImGui-based UI for real-time scene manipulation.
This renderer implements PBR entirely through Vulkan shaders without ray tracing extensions.
-
Physically-Based Rendering (PBR): Realistic material rendering using physically-based shading models in GLSL shaders.
-
Custom Graphics Pipeline Framework: An extensible system to easily define, manage, and swap custom Vulkan graphics pipelines.
-
Entity-Component System (ECS): Powered by
enttto manage entities with components like:TransformComponentMeshComponentMaterialComponentCameraComponentLightComponent
-
Scene Editor UI: Built using ImGui and ImGuizmo for interactive object manipulation (translate, rotate, scale) and scene inspection.
-
Scene Serialization: Save and load entire scenes in human-readable YAML format.
-
Asset Loading: Load 3D models via Assimp and support for SPIR-V shader loading.
-
Entities are created and assigned components (Transform, Mesh, Material).
-
The Renderer iterates over entities and submits draw calls based on their components.
-
Graphics Pipelines are defined via an internal framework, enabling easy creation of multiple render passes and specialized pipelines.
-
ImGui UI allows:
- Viewing entity hierarchy and properties.
- Manipulating transforms with ImGuizmo.
- Adjusting material properties in real-time.
-
Scenes can be saved/loaded to YAML, preserving the entity hierarchy and properties.
Requirements:
- Premake
- C++17
- Vulkan SDK
git clone https://github.com/sanjay004mk/entropy-engine.git
cd entropy-engine
premake5 vs2022
