projectM-visualizer / projectM-visualizer/projectm

[FEATURE] Support 10-bit (HDR) surfaces throughout the rendering process

Open
#1,024 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
4.5k
Forks
485
Avg merge
3d 7h
Merged PRs (30d)
5

Description

Currently, projectM internally uses RGB(A)8 pixel formats throughout the rendering process. Since more and more people have screen capable of displaying higher per-channel color resolutions.

While presets aren't really aware of this, it's not necessary as almost all color calculations in presets are done as floating-point values, especially in shaders. Outputting the shader results onto a 10-bit texture will automatically give smoother color gradients, making presets look better, having a higher brightness range on screens supporting it.

Render target textures created by projectM internally should ideally follow the texture format provided in the application-provided output texture/framebuffer passed to the frame render function. This is for example possible by quering the color depth of the target framebuffer attachment via glGetFramebufferAttachmentParameter() (or glGetFramebufferAttachmentParameteriv() when using GLES) and the GL_FRAMEBUFFER_ATTACHMENT_<color>_SIZE query args.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the frame render function and the creation of projectM's internal render-target textures. Read how the application-provided output framebuffer is handled, then examine the framebuffer attachment color-size queries for desktop and GLES paths. Done means internal textures follow the provided output format and support 10-bit/HDR rendering throughout the process.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.