Two-channel framebuffers for next-gen color schemes

submited by
Style Pass
2024-04-03 23:00:12

Reducing the memory consumed by a framebuffer is often useful in modern rendering, as the advent of HDR techniques both scales memory usage and can often steal an alpha channel, preventing correct blending. Here's a method for reducing the number of color channels required from 3 down to 2, thus allowing space to either be reclaimed or used to obtain two spare alpha channels.

People often complain that next-gen games have an "everything is brown" look to them1. So I figure, if it is indeed the case that the game is not making full use of the full RGB spectrum, why not try and take advantage of that to optimize rendering accordingly?

Many graphics cards don't offer very good support for HDR render targets, so a lot of games try to use some sort of packed LDR format to store data2. One popular solution is to pack large values into existing 32-bit RGBA render targets, for example by converting into a YUV representation, then storing Y split across two color channels3.

The downside to the LogLUV approach and others like it, is that it consumes the alpha channel. This makes it hard or impossible to achieve alpha-based transparency.

Leave a Comment