As of now, gpu-next only uses rgba16hf internal texture format even for HDR, with no ability to change it, but gpu has fbo-format with high range of options. Given rgba16hf is a half float with 1 sign, 5 exponent and 10 mantissa bits, we're left with ~11 bits of usable precision. It's not enough headroom to prevent rounding errors during 10bit video tone mapping, color adjustments, shader processing and even representing 12bit video isn't mathematically possible. Many people use at least 1-3 shaders, use tone mapping or LUTs, adjust contrast or saturation, so mathematical errors can creep up and manifest as banding and color inaccuracies. This is the reason why 32bit float is required for proper audio processing even though the output is 16bit, for example.
Given all that, I request for an option that can change internal format to rgba32f or similar, like fbo-format in gpu, or combine them into vo-internal-precision for simplicity. And it's important to make sure that all decoding and processing is done in this exact bit depth right up to dithering pass.
For a reasonable performance impact this ensures that all processing is perfectly clean and doesn't add any digital artifacts by itself.
As of now,
gpu-nextonly usesrgba16hfinternal texture format even for HDR, with no ability to change it, butgpuhasfbo-formatwith high range of options. Givenrgba16hfis a half float with 1 sign, 5 exponent and 10 mantissa bits, we're left with ~11 bits of usable precision. It's not enough headroom to prevent rounding errors during 10bit video tone mapping, color adjustments, shader processing and even representing 12bit video isn't mathematically possible. Many people use at least 1-3 shaders, use tone mapping or LUTs, adjust contrast or saturation, so mathematical errors can creep up and manifest as banding and color inaccuracies. This is the reason why 32bit float is required for proper audio processing even though the output is 16bit, for example.Given all that, I request for an option that can change internal format to
rgba32for similar, likefbo-formatingpu, or combine them intovo-internal-precisionfor simplicity. And it's important to make sure that all decoding and processing is done in this exact bit depth right up to dithering pass.For a reasonable performance impact this ensures that all processing is perfectly clean and doesn't add any digital artifacts by itself.