Color banding... How do I make it go away?


See the color banding in the gradients?

  1. It’s ugly.
  2. How do I get rig of it?

Is it there also in standalone? It may be color depth(too less bits).

Running 32bit color, banding is just as visible in the standalone.

Banding sometimes occurs because you are trying to display a 32-bit image on your 8-bit screen, like when you look at the depth pass you’ll see a lot of banding, even though there are plenty of values in there. The display doesn’t interpret it very well. (This doesn’t matter because the depth is used for calculating, not viewing.)

It also occurs, as adriansnetlis points out, when you’re doing the calculations in 8-bit space, especially when you are “stretching” the values around with levels, gamma, curves, etc. Eventually the calculations run out of color. But I don’t think this is a problem with Blender’s compositor, as it always does its calculations in 32-bit, if I’m not mistaken. (It happens in programs like After Effects a lot, in which case changing from 8-bit to 16-bit space can fix the problem.)

That said, your OUTPUT could be an 8-bit image, and causing some problems, but regardless, everyone will be watching this on an 8-bit display, so it’s something you need to deal with regardless if you’re seeing banding on your display. Three ways come to mind to deal with this:

  1. ADD GRAIN. Crazy, right? But adding grain breaks up the too-little-changing gradients into something that changes more often in the image, and removes the appearance of banding. You can either do this in the Compositor, or actually reducing your render samples will add more grain and do this as well (though you may not like the final look).

  2. ADD TEXTURE. If you introduce some bump or texture that breaks up the surface and makes it less of one smooth, consistent color (which we rarely see in the real world), again this causes the gradient values to break up a bit, adds variety, and eliminates banding.

  3. TWEAK LIGHTING. The banding in your render is caused by a combination of a single lamp on a smooth, relatively dark surface. Add a couple more lights and that gradual banding will go away because of the variety created by these other lights.

Yeah, I have noticed it too, but haven’t though why it appears there as lighting usually have to be calculation that can’t be like that - usually it must be 100% smooth as it is something like dot(normal, lightDirection) used for the light value. However, using textures should imediatly hide the rings…

I don’t follow…
I want it to just go away, I don’t want to hurt the visual quality to do so.
What’s this talk of 8 bit output? Also my displays are both 32bit color like any display made within the last 20 years.

The vast majority of displays are 8-bit. There are a few that will work in 10-bit, if you can afford them (like this one). Basically, you can’t expect your home audience to have anything better than an 8-bit display.

An 8-bit image has 256 shades of Red, 256 shades of Green, and 256 shades of Blue. That produces 216216216 = 16,277,216 possible color combinations, but only 256 combinations if you’re working in greyscale (or virtually greyscale, like in the sample render you posted above). Note the oft-used term “Millions of Colors” which you’ll see a lot when choosing an image or render quality in something like Quicktime Player: “Millions of Colors” usually means 8-bit color, “Billions of Colors” usually means 10-bit color, and “Trillions of Colors” usually means 16-bit color. Many codecs and options only offer the “Millions of Colors” as the final delivery rarely needs to be greater than 8-bit (JPEG, for instance, is limited to 8 bits).

Computers can PROCESS in color spaces larger than 8 bits. Blender works in 32-bit space. Color conversions (sRGB to REC709, for instance) happen in 32-bit space. But the final delivery remains 8-bit most of the time.

In the end, we’re limited by the physical hardware that we have available, and our own biology. Which means, for now, we have to find a way to make an image work in 8-bit space.

If I have time maybe I’ll do a little video demonstration of what’s going on here. Maybe tomorrow-ish, if this is still confusing you. It can be a bit baffling at times.

So that means all of you have banding too…
Right?


All of the above and the light fall off node is your friend.

<edit>

Google is your friend too, Well frienemy

I don’t have color banding in cycles…
I’m talking about the game engine.

Ha ha! We all thought you were talking about the render engines.
In case of the game engine, adding a little texture to your floor should fix it. This will also help with the realism, if that matters to you.

So nobody can help the banding in the game engine?

Probably not. Use a paint program to check if there is numerical banding (i.e.: brightness jumping from 44 to 48), and keep in mind that many monitors won’t show more than 64 shades per component regardless of the card’s bit depth.

Tweak lines 8 and 9 in the code to taste.

Banding is simply something we have to deal with in graphic design. IMO, the best way to beat banding is to have textured surfaces. But when you can’t have textured surfaces… you texture them anyway. In subtle ways…

But then, if that can’t be your solution, then you add noise (which is what dithering does, more or less), effectively making those annoying borders of slight color/value shifting more random.

I know you want a perfect solution to this, but there isn’t one. Banding simply happens. or, as they say, B****** happens.

thanks for your help!