Skip to content
This repository was archived by the owner on Mar 22, 2026. It is now read-only.
This repository was archived by the owner on Mar 22, 2026. It is now read-only.

[FEAT] Refactor Renderer Architecture #69

@PiquelChips

Description

@PiquelChips

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestrendererChanges to renderer

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions