Manages shader hot-reload subscriptions and coordinates pipeline/renderpass rebuilds.
More...
|
| ILLUMINE_API void | Shutdown () |
| | Releases all subscriptions and drains the reload queue. Must be called before renderer shutdown.
|
| ILLUMINE_API void | OnResize (u32 width, u32 height) |
| ILLUMINE_API void | RegisterFramebufferForResize (const std::string &name, Framebuffer *fb) |
| ILLUMINE_API void | Subscribe (const Ref< Shader > &shader, Ref< Pipeline > pipeline, Ref< RenderPass > renderPass) |
| | Subscribes a pipeline and its dependent renderpass to a shader's reload events. If the pipeline is already subscribed, the existing entry is replaced.
|
| ILLUMINE_API void | Subscribe (const Ref< Shader > &shader, Ref< ComputePipeline > pipeline, Ref< ComputePass > renderPass) |
| ILLUMINE_API void | Unsubscribe (Ref< Pipeline > pipeline) |
| | Removes all subscriptions associated with the given pipeline. Should be called from Pipeline::Release to prevent dangling entries.
|
| ILLUMINE_API void | Unsubscribe (Ref< ComputePipeline > pipeline) |
| ILLUMINE_API void | QueueShaderReload (const Ref< Shader > &shader) |
| | Queues a shader for reload on the next ProcessReloadQueue call. Duplicate entries for the same shader are ignored.
|
| ILLUMINE_API void | ProcessReloadQueue () |
| | Processes all queued shader reloads. Calls FlushAndWait to ensure the GPU is idle before rebuilding any resources. For each queued shader: releases its descriptor layouts, recreates it via Shader::Create, updates the ShaderLibrary, rebuilds dependent pipelines, and re-bakes dependent renderpasses.
|
Manages shader hot-reload subscriptions and coordinates pipeline/renderpass rebuilds.
Pipelines and their dependent RenderPasses subscribe to a shader by name. When a shader reload is queued and processed, the registry rebuilds all dependent pipelines and re-bakes their RenderPasses in a GPU-safe manner via FlushAndWait.
- Note
- Subscribe is called automatically from VulkanRenderPass constructor.
-
Unsubscribe is called automatically from Pipeline::Release.
-
ProcessReloadQueue must be called once per frame from the main thread (BeginRender).
| void Raven::RenderResourceRegistry::ProcessReloadQueue |
( |
| ) |
|
Processes all queued shader reloads. Calls FlushAndWait to ensure the GPU is idle before rebuilding any resources. For each queued shader: releases its descriptor layouts, recreates it via Shader::Create, updates the ShaderLibrary, rebuilds dependent pipelines, and re-bakes dependent renderpasses.
Must be called from the main thread once per frame, before BeginFrame.