You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the opengl1 renderer with default settings it needs hardware gamma ramps for r_overbrightbits 1 to double the screen brightness after rendering. Custom r_gamma and r_intensity also depend on hardware gamma ramps.
This doesn't work in windowed mode, on some hardware, when using Wayland display protocol on Linux, and recording/streaming in OBS Studio.
SDL 3—still in development—removed hardware gamma ramps altogether and it sounds like sdl2-compat won't support gamma ramps. So instead of overbright being broken in half of the use cases in the future, it will be broken in all of them.
Adding software gamma ramps to opengl1 would be nice even before using SDL 3. It could only be used when hardware gamma ramps aren't available / SDL_SetWindowGammaRamp() fails or r_ignorehwgamma 1.
Implementation
OpenArena engine has r_alternateBrightness which is a clever solution to software overbright. It draws a fullscreen white image with the blend mode srcFactor=GL_DST_COLOR dstFactor=GL_SRC_COLOR (one * screen + one * screen) to double the brightness of the screen. This matches r_overbrightbits 1 and isn't as slow as using a framebuffer object.
This is OpenGL 1.1 API compatible but that doesn't mean it works everywhere. I've read that the ATI Rage Pro graphics card only supports like 4 blend modes and I don't think this is one of them. I'm not sure what happens. I'm not sure if just using r_overbrightbits 0 would be the best solution in that case (no hardware gamma and missing/broken blend mode) or if there is a need for a specific option to disable fullscreen-blend overbright.
Other non-default settings of r_overbrightbits, r_gamma, and r_intensity could fallback to using a framebuffer object and GLSL to apply gamma ramps.
The text was updated successfully, but these errors were encountered:
In the opengl1 renderer with default settings it needs hardware gamma ramps for r_overbrightbits 1 to double the screen brightness after rendering. Custom r_gamma and r_intensity also depend on hardware gamma ramps.
This doesn't work in windowed mode, on some hardware, when using Wayland display protocol on Linux, and recording/streaming in OBS Studio.
SDL 3—still in development—removed hardware gamma ramps altogether and it sounds like sdl2-compat won't support gamma ramps. So instead of overbright being broken in half of the use cases in the future, it will be broken in all of them.
Adding software gamma ramps to opengl1 would be nice even before using SDL 3. It could only be used when hardware gamma ramps aren't available / SDL_SetWindowGammaRamp() fails or r_ignorehwgamma 1.
Implementation
OpenArena engine has r_alternateBrightness which is a clever solution to software overbright. It draws a fullscreen white image with the blend mode srcFactor=GL_DST_COLOR dstFactor=GL_SRC_COLOR (one * screen + one * screen) to double the brightness of the screen. This matches r_overbrightbits 1 and isn't as slow as using a framebuffer object.
This is OpenGL 1.1 API compatible but that doesn't mean it works everywhere. I've read that the ATI Rage Pro graphics card only supports like 4 blend modes and I don't think this is one of them. I'm not sure what happens. I'm not sure if just using r_overbrightbits 0 would be the best solution in that case (no hardware gamma and missing/broken blend mode) or if there is a need for a specific option to disable fullscreen-blend overbright.
Other non-default settings of r_overbrightbits, r_gamma, and r_intensity could fallback to using a framebuffer object and GLSL to apply gamma ramps.
The text was updated successfully, but these errors were encountered: