This repository was archived by the owner on Mar 22, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository was archived by the owner on Mar 22, 2026. It is now read-only.
[FEAT] Refactor Renderer Architecture #69
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requestrendererChanges to rendererChanges to renderer
Milestone
Description
Why this feature?
Renderer and rendering is currently a bit of a mess. This should serve to simplify and create a robust API for now and the future.
Describe the feature
Move Renderer class and most rendering stuff to separate module. Renderer should be fully self contained and never call on engine, platform,...
Should be done with #47
Render Objects
Texture
- Owned by renderer
- Owns texture buffers & images
- Option to create a sampler for it
get()method to return descriptor set
Material
- Owned by renderer
- Has a reference to texture(s)
- Owns UBOs with material attributes and stuff
Meshes
- Owned by renderer
- Has reference to material(s)
- Owns vertex & index buffers
- Getter for buffer's & UBO's
Actor
- Owned by world
- References one or more meshes
- The references are collected by viewport on render and used when rendering the full scene
Viewport
- Owned by Engine
- Reference to world
- Owns camera that is placed in that world
Renderer
- In own module, should be independent of all engine systems
- Handle all memory operations
- Allocate images, (frame, command, uniform) buffers, descriptor (sets, pools)
- Owns pretty much every render object
- Handles all of ImGui rendering
Notes
Command system
- Have a render command interface that can be overrided by any other command
- Push the command to a queue
- At render time, execute the items in the queue
Mesh object
- Owns vertices, materials, textures, etc...
- Has render method
- Should take a transform (that will be used model matrix)
- Should return a command object that can be submitted to renderer
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestrendererChanges to rendererChanges to renderer