Closed paulmelis closed 4 years ago
OK, this is actually an artifact of floating-point precision (in combination that we round down when converting colors from float to byte): using an float framebuffer we see that the result is 0x3f7fffff for the first case and 0x3f7ffffe for the 2nd (accumulating) case. Those numbers are almost 1.0 (one and 2 ulps less, respectively). Converting both floats to byte the result is 0xfe (254), because we round down. When additionally applying the sRGB transformation before conversion, the first float rounds exactly to 1.0 (thus the byte will be 255), the 2nd stays one ulp below 1.0...
So, we could (properly) round when converting to bytes, which would solve this issue.
Looks like you can't get pure white as background whenever the accumulation buffer is enabled.