How carcodee/codevkengine works
CodeVkEngine is a Vulkan graphics engine for rendering experiments. The principal workflow is: a user interacts with a window and renderer controls; renderer passes describe work in the render graph; the engine manages GPU resources, builds queue batches, and submits them for presentation. The documented default is Flat_Renderer, with Cluster_Renderer and Gaussian-splat prototypes as additional capabilities. README documentation supports several relationships; source excerpts are limited, so unsampled implementation details are not inferred.
Main entry points: main.cpp Runtime setup · RenderGraph.hpp Render graph · FlatRenderer.hpp Flat renderer · PresentQueue.hpp Queue submission
Components 22
Application
- Window provider
src/WindowAPI/WindowProvider.hpp - Runtime setup
src/main.cpp
Rendering
- Flat renderer
src/Rendering/Renderers/FlatRenderer.hpp - Cluster renderer
src/Rendering/Renderers/ClusterRenderer.hpp - Renderer interface
src/Rendering/BaseRenderer.hpp - Rendering resources
src/Rendering/RThings/RenderingResManager.hpp
Vulkan engine
- Render graph
src/Engine/RenderGraph.hpp - Vulkan core
src/Engine/Core.hpp - Core implementation
src/Engine/CoreImpl.hpp - GPU resources
src/Engine/ResourcesManager.hpp - Descriptor cache
src/Engine/DescriptorCache.hpp - Pipeline creation
src/Engine/Pipeline.hpp - Shader parsing
src/Engine/ShaderParser.hpp - Synchronization
src/Engine/SyncronizationPatterns.hpp - Queue submission
src/Engine/PresentQueue.hpp
Assets and tools
- ImGui renderer
src/Rendering/ImguiRenderer.hpp - Asset access
src/Systems/FilesManager.hpp - Profiler UI
src/Engine/Profiler.hpp - Graph editor UI
src/UI/GraphNodeResManagerImpl.hpp
Other components
- User
- Vulkan device
- CUDA interop
Connections 28
- User → Window provider: interacts with
- Window provider → Runtime setup: provides window
- Runtime setup → Render graph: creates manager
src/main.cpp - Runtime setup → Queue submission: creates queue
src/main.cpp - Runtime setup → GPU resources: gets manager
src/main.cpp - Runtime setup → Rendering resources: gets manager
src/main.cpp - Runtime setup → Flat renderer: selects default
- User → Flat renderer: paints canvas
- Runtime setup → Cluster renderer: selects optionally
- Flat renderer → Render graph: defines passes
- Cluster renderer → Render graph: defines passes
- Renderer interface → Flat renderer: interfaces
- Renderer interface → Cluster renderer: interfaces
- Render graph → Queue submission: builds batches
- Queue submission → Vulkan device: submits work
- GPU resources → Vulkan device: manages resources
- Pipeline creation → Vulkan device: creates pipelines
- Shader parsing → Pipeline creation: reflects shaders
- Descriptor cache → Pipeline creation: binds resources
- Synchronization → Queue submission: synchronizes queues
- Render graph → CUDA interop: dispatches CUDA batches
- CUDA interop → Vulkan device: shares exported buffers
- Asset access → Flat renderer: loads assets
- Runtime setup → ImGui renderer: creates UI
src/main.cpp - ImGui renderer → Render graph: inspects execution
- Profiler UI → ImGui renderer: renders profiling
- Graph editor UI → Render graph: edits graph
- Rendering resources → Flat renderer: supplies render assets