Skip to content

Renderer Abstraction #39

@wpumacay

Description

@wpumacay

Description

This module is in charge of exposing all available features into an abstract renderer interface. It should be similar to ThreeJS. We should have a similar ShadderLib and ShaderChunk system to generate a Master Shader used for the rendering process, without requiring that many state changes if possible.

Tasks

  • Design the whole renderer module
  • Implement ShaderChunk module (C++)
  • Implement ShaderLib module (C++)
  • Implement render pipeline (should support multiple lights and shadows) (C++)
  • Examples of usage (C++)
  • Python bindings
  • Examples of usage (Python)
  • Documentation (API auto-generated using Sphinx + Breathe)
  • Documentation (.rst custom made for a detailed description)

Notes

  • Should abstract away the renderer interface from the specific graphics API (e.g. OpenGL), similar to how ThreeJS handles WebGL, WebGL2, and WebGPU. We should move all graphics-API-specific objects to their own folder.

Metadata

Metadata

Assignees

Labels

component: bindingsRelated to Python Bindings generationcomponent: engine objectsRelated to objects from the engine itself (e.g. Cameras, Lights, Meshes, etc.)component: opengl-primitivesRelated to abstractions of OpenGL objects like VBOs, IBOs, VAOs, Textures, etc.component: rendering pipelineRelated to the parts of the rendering pipeline (e.g. culling, shadows, lighting, etc.)component: shadersRelated to creating/updating/refactoring glsl shaders from the enginetype: docstype: feature

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions