5e1caabde6d9b7a86ea120f869e77294c76067b4
Add a RenderTarget resource so the scene can render offscreen instead of straight to the swapchain. The editor uses it to show the scene inside the Viewport panel. - Rename AssetRegistry to ResourceRegistry (AssetTraits -> ResourceTraits, assets() -> resources()) and move the pools from engine/src/assets to engine/src/resources. It now covers non-asset GPU resources as well. - Replace loadMesh() with create<T>(...), and add create<RenderTarget>(), requestResize(), getExtent() and isAlive(). - Add RenderTarget and RenderTargetPool with RenderTargetHandle. Resizes are deferred and applied at the start of the next frame, when the GPU is idle. - Add Application::setSceneTarget(). With no target set, the scene still renders to the swapchain. With a target set, the scene renders offscreen and the swapchain receives only the UI. Frame extent and camera projection follow the target's size. - Add sophia::UI (Application::ui()) with image() and getTextureId() to draw a render target in an ImGui window, sizing the target to the available space. ImGuiRenderer now registers the target textures for this. - ViewportPanel takes the UI and a target, and draws the scene image in place of the flat background fill. - Update the testbed, the boids example, and the glossary for the rename.
sophia
Getting Started
COMING SOON
Developing on the engine
Dependencies
- cmake
- Vulkan SDK - With validation layers
Build instructions
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cd build
make -j
Third Party libraries used
- GLFW - Window and input handling
- GLM - Vector/matrix math
- Dear ImGui (docking branch) - Debug/editor UI
- EnTT - Entity-component system
- Vulkan SDK
Description
Languages
C++
87.3%
GLSL
6.1%
Python
5.5%
CMake
1.1%