Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Renderer Abstraction #39

Open
9 tasks
wpumacay opened this issue Jun 1, 2023 · 0 comments
Open
9 tasks

Renderer Abstraction #39

wpumacay opened this issue Jun 1, 2023 · 0 comments
Assignees
Labels
component: bindings Related to Python Bindings generation component: engine objects Related to objects from the engine itself (e.g. Cameras, Lights, Meshes, etc.) component: opengl-primitives Related to abstractions of OpenGL objects like VBOs, IBOs, VAOs, Textures, etc. component: rendering pipeline Related to the parts of the rendering pipeline (e.g. culling, shadows, lighting, etc.) component: shaders Related to creating/updating/refactoring glsl shaders from the engine type: docs type: feature

Comments

@wpumacay
Copy link
Owner

wpumacay commented Jun 1, 2023

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.
@wpumacay wpumacay converted this from a draft issue Jun 1, 2023
@wpumacay wpumacay self-assigned this Jun 1, 2023
@wpumacay wpumacay added component: bindings Related to Python Bindings generation component: opengl-primitives Related to abstractions of OpenGL objects like VBOs, IBOs, VAOs, Textures, etc. component: shaders Related to creating/updating/refactoring glsl shaders from the engine type: docs type: feature component: engine objects Related to objects from the engine itself (e.g. Cameras, Lights, Meshes, etc.) component: rendering pipeline Related to the parts of the rendering pipeline (e.g. culling, shadows, lighting, etc.) labels Jun 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: bindings Related to Python Bindings generation component: engine objects Related to objects from the engine itself (e.g. Cameras, Lights, Meshes, etc.) component: opengl-primitives Related to abstractions of OpenGL objects like VBOs, IBOs, VAOs, Textures, etc. component: rendering pipeline Related to the parts of the rendering pipeline (e.g. culling, shadows, lighting, etc.) component: shaders Related to creating/updating/refactoring glsl shaders from the engine type: docs type: feature
Projects
Status: Todo
Development

No branches or pull requests

1 participant