Add offscreen render targets and rename AssetRegistry to ResourceRegistry #8

Merged
burkkyy merged 26 commits from dev into main 2026-09-25 20:39:26 -07:00
Owner

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(...), and add create(),
    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.
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.
burkkyy added 1 commit 2026-09-20 16:21:46 -07:00
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.
burkkyy added the enhancement label 2026-09-20 16:22:44 -07:00
burkkyy added 1 commit 2026-09-20 18:58:54 -07:00
burkkyy added 1 commit 2026-09-20 20:52:13 -07:00
burkkyy added 2 commits 2026-09-21 00:30:15 -07:00
burkkyy added 1 commit 2026-09-21 01:03:21 -07:00
burkkyy added 1 commit 2026-09-21 01:10:16 -07:00
burkkyy added 1 commit 2026-09-21 01:16:05 -07:00
burkkyy added 1 commit 2026-09-21 01:30:26 -07:00
burkkyy added 1 commit 2026-09-21 01:33:41 -07:00
burkkyy added 1 commit 2026-09-21 11:34:31 -07:00
burkkyy added 1 commit 2026-09-22 21:19:02 -07:00
burkkyy added 1 commit 2026-09-23 00:42:49 -07:00
burkkyy added 1 commit 2026-09-23 22:29:57 -07:00
burkkyy added 1 commit 2026-09-23 23:24:27 -07:00
burkkyy added 1 commit 2026-09-24 23:00:07 -07:00
burkkyy added 1 commit 2026-09-24 23:00:46 -07:00
burkkyy added 1 commit 2026-09-25 19:04:04 -07:00
burkkyy added 1 commit 2026-09-25 19:21:46 -07:00
burkkyy added 1 commit 2026-09-25 19:32:35 -07:00
burkkyy added 2 commits 2026-09-25 20:09:59 -07:00
burkkyy added 3 commits 2026-09-25 20:23:16 -07:00
burkkyy added 1 commit 2026-09-25 20:39:06 -07:00
burkkyy merged commit 97dc08890b into main 2026-09-25 20:39:26 -07:00
Sign in to join this conversation.