Is 8 bits enough? Of course not.

More than likely your monitor only displays 8 bits of precision in an sRGB color space. Is that enough color precision to display images without artifacts? No. Not even close.

The most common artifact that you will see due to a lack of color precision is banding. With 8 bits of precision, you have 2^8=256 different values available for each color. So each channel (red, green, and blue) each go from 0 to 255. If the precision was “enough”, then the colors would be so close together that the human eye couldn’t tell the difference between them, and we would see a gradient. Is it? In the image below, the gradient goes from 91 to 96. Also, if you mouse over the numbers you see more gradient lines. The last one is a special treat: I dusted off my animated GIF skillz from 1996 and made an animation of the first 4 images.

1 2 3 4 5

If you mouse over you should be able to clearly see the edges around them. At least I can. And you can REALLY see it in the animated GIF.

This next image is a little harder to see. It’s similar to the first two except that the red, green, and blue channels are out of sync. While you probably can’t see as much banding, you should be able to see that bands shift from purple-ish to green-ish.

1 2 3 4 5

With 8 bits, in addition to not having luminance accuracy, you also don’t have as much color accuracy. Here is a hypothetical. Suppose that you want a clean blend between red and green. As an RGB triple on an 8-bit display, red is (255,0,0) and green is (0,255,0), so you get 254 “steps” between them. But I never said how bright red and green were. Now lets make them darker, and say that dark red is (16,0,0) and dark green is (0,16,0). Well, now we only have 15 shades between them. And in the worst case there are literally no shades in between our darkest shades of pure red (1,0,0) and pure green (0,1,0).

Current displays can show 256*256*256=16 million colors. That’s actually not even close to being enough, at least with the way that they are distributed. If we could have a theoretical monitor that had a better distribution of colors (i.e. more in the blacks) then 16 million colors might be enough. But monitors today have too much precision in the whites and not enough in the blacks.

So with the real monitors that we have, which in most cases are 8-bit sRGB, we don’t have enough precision to recreate the colors that our eye can see. That’s why professional coloring systems use 10-bit colors instead of 8. For most images 8-bits is fine. But if you have lots of dark, smooth gradients you’ll see lots of banding. This problem is compounded by TV signal compression. Next time you are watching a dark TV show check out the blacks in the background. You’ll see what I mean, especially in the reds.

This might sound like a crazy hypothetical but it happens all the time. Also, television LCDs are much worse than your normal computer monitor LCDs. When I was working at Naughty Dog, about once every month or so an artist would come to me complaining about banding. And each time I’d take a screenshot, open it in Photoshop, and show them that the two colors are only 1 code apart so it’s the TV and there’s nothing I can do about it. If you were to ask me how to increase the quality of TV broadcasting, I wouldn’t say more resolution. I’d ask more more color precision.

It would be really cool to some day have HDR displays. But be patient: It’s going to be a while. We don’t even have enough color precision for the displays that we have now, so there’s no point in having an HDR display until we get more range than an 8-bit sRGB signal.

  • Samuel Rødal

    You didn’t mention dithering, which makes better use of those 24 bits. Anyway, more bits are needed, and seem to be coming with Deep Color support (and also importantly we’re getting wider gamuts in the form of new color spaces like scRGB and xvYCC): http://en.wikipedia.org/wiki/Color_depth#Beyond_truecolor

  • http://twitter.com/KeefJudge Keith Judge

    I seem to recall reading somewhere that a lot of cheaper LCD screens only use 6 bits per channel, resulting in even more banding than this.

  • http://www.HDRLabs.com Blochi

    Great point, Samuel! Dithering is a nasty hack, but it works extremely well. Especially when you’re making a composite in 16 bit float, and then convert down to 8 bit. Another very helpful thing is grain/noise.

  • http://blog.19lights.com John Hable

    Yep, you could definitely use dithering as a hack to reduce the banding here. The point of course is that 8 bits (in sRGB) isn’t enough for an LDR display, much less an HDR one.

    Better color spaces would be good. You could get a long way with 10-bit log (or even 8-bit log). On the broadcast side, it’s really hard to add more bits because you have to upgrade cameras, post production workflows, consumer set-top boxes, and satellites. It would be cool if the next consoles had at least 10-bit support to get the ball rolling, but it’s a chicken and egg problem. There’s no content so no one makes TVs with 10-bit support. Since there are no TVs no one creates 10-bit content. And of course due to compression artifacts we still can’t even use all 8 bits on broadcast content.

  • http://twitter.com/OhSillySillyMe R|L

    Exactly. A lot of low-end LCD panels were using dithered 6-bit color some years ago. I watched Bioshock being played on such a computer LCD monitor over at a friend’s house back in the day. I don’t know what the situatioin is now, though.

    Thanks for the nice read, John! :^)

    Best regards.

  • http://twitter.com/srodal Samuel Rødal

    Yep, I’d much rather see display development go in the higher refresh rate, wider gamut, more bits per pixel, and high dynamic range direction than in the 3D direction, which seems to be more of a fad, and visually confusing due to lack of eye controlled focus. But as the wikipedia article mentions, HDMI 1.3 supports Deep Color and xvYCC, and the PS3 ( and newer AMD and Nvidia graphics cards on PC ) support Deep Color output ( http://manuals.playstation.net/document/en/ps3/current/settings/deepcolor.html ), and there are already displays that support it ( http://www.luminous-landscape.com/reviews/accessories/10bit.shtml and http://www.imaging-resource.com/NEWS/1213841085.html ), so I’m optimistic :)

  • http://blog.19lights.com John Hable

    Very cool! You’d think I would know that about the PS3. (-:

  • Todd Seiler

    Let me get this straight….
    So, if we used say, 3 64-bit channels, we would have a lot more precision for maintaining color accuracy when blending colors together multiple times…. it doesn’t get out of whack (as much)…. But since our monitors only use 8 bits per channel, it auto down-samples this to a crappy 8-bit range? I always wondered what that meant for monitors exactly….

  • http://jens.ayton.se/blag/ Ahruman

    8-bit log is pretty much what we have. That’s what all them gammas are for.

  • Johnhable

    Really? How so? sRGB has a linear section with a slope of 1/12.92. It has much less precision in the blacks than either 8-bit log or even a true 2.2 gamma curve.

  • http://www.reedbeta.com/blog/2012/02/12/understanding-bcn-texture-compression-formats/ Understanding BCn Texture Compression Formats – Nathan Reed's coding blog

    [...] (although on many monitors you will still see some banding—with today’s contrast ratios eight bits aren’t enough for perfectly smooth gradients). However, the bottom gradient is much more bandy than the top one. [...]

  • http://www.hackinc2000.com/?p=19651 Hackinc2000.com » Understanding BCn Texture Compression Formats

    [...] smooth (although on many monitors you will still see some banding—with today’s contrast ratios eight bits aren’t enough for perfectly smooth gradients). However, the bottom gradient is much more bandy than the top one. [...]

  • http://oster111.com/n%c2%b068-76/ n°68.76 « Oster Turbo 111

    [...] Ilenazz , Missak , Kalam's, Emka et Def chez Oster Lapwass///Réalisation:OVERCOM PICTURES///plus d'info sur web.osterlapwass.metal oster video rating: 4.938 / 5 Tags:oster, lapwass, hep, hop, lyon, rap, freestyle, kacem, wapalek, lucio, bukowski, ethor, cranium, ilenazz, anton, sera, anto, zero, pointe, cdk, dico, kalam's A question almost oster from: King: Target Dark Friday promise For a Oster microwave $33? oster Chosen answer: I don't know if they LIED roughly it impose on their ads they got an oster .7 cu untainted steel all for $33 only when I went there Its completely different from the picture and its not stainless steel Privation help?Go away your answer oster Ryobi 8-Piece Forstner Bit Set for $15 + free business Home Depot still offers the Ryobi 8-Piece Forstner Bit Set, prototype no. A9FS8, all for $14.97 with free business. That's tied with our mention from last week and $34 under the lowest sum cost we could find for a similar name-brand set elsewhere. Income charge is added where applicable. This lumber drilling set includes eight bits. n°68.76 Ilenazz , Missak , Kalam's, Emka et Def chez Oster Lapwass///Réalisation:OVERCOM PICTURES/…ect> [...]