# entropy-engine **Repository Path**: alonebinge/entropy-engine ## Basic Information - **Project Name**: entropy-engine - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-19 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Entropy Engine: Vulkan PBR Renderer 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. --- ## Features * **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 `entt` to manage entities with components like: * `TransformComponent` * `MeshComponent` * `MaterialComponent` * `CameraComponent` * `LightComponent` * **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. --- ## Dependencies * [Vulkan SDK](https://vulkan.lunarg.com/) * [GLFW](https://github.com/glfw/glfw) * [ImGui](https://github.com/ocornut/imgui) * [ImGuizmo](https://github.com/CedricGuillemet/ImGuizmo) * [glm](https://github.com/g-truc/glm) * [spdlog](https://github.com/gabime/spdlog) * [entt](https://github.com/skypjack/entt) * [yaml-cpp](https://github.com/jbeder/yaml-cpp) * [Assimp](https://github.com/assimp/assimp) --- ## Working * **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. --- ## Build Instructions **Requirements**: * [Premake](https://premake.github.io/) * C++17 * Vulkan SDK ```bash git clone https://github.com/sanjay004mk/entropy-engine.git cd entropy-engine premake5 vs2022 ``` --- ## Screenshots ![sphere](screenshots/sphere.png) ![cerberus](screenshots/cerberus.png)