Forum Discussion
Fredrum
12 years agoExpert Protege
Banding in dim Lighting
I have posted also on the Unity forums but thought I'd ask here too. I am getting some strong color banding in my dimly lit scene, from the lighting/shading using the default Diffuse with a texture...
bgolus
12 years agoExplorer
The issue is caused by running into the limit of 24 bit color fidelity. This isn't unique to the Oculus, it's just made more apparent because of the enclosed design of HMDs let you see low brightness values more easily than on a monitor or tv in a normally lit room. If you look at your original image in photoshop with the color picker and RGB values you'll see each band is one value different.
ie: you'll see the color values do something like this:
R:4 G:4 B:4 -- very dark grey
R:4 G:4 B:3 -- very dark orangish band
R:4 G:3 B:3 -- very dark reddish band
R:3 G:3 B:3 -- back to very dark grey
The solution to this, and what Photoshop and Nuke do when creating gradients is effectively calculate the gradient at greater than 8 bit per pixel color accuracy and add very small amount of noise.
Here's a close up of that gradient from Nuke heavily brightened in Photoshop to show the noise.
https://dl.dropboxusercontent.com/u/49665566/gradientNoise.png
Unfortunately for this to work well the dithering process has to occur as the last pass on the image before being sent to the display. Any distortion or image modification can cause obvious patterns or streaks to appear. Film noise have been a popular method to help hide these artifacts in darker games, but this isn't a good option for VR.
edit: Also I'm pretty sure Carmack saw this post too as he complained about the issue (and solution) on Twitter.
https://twitter.com/ID_AA_Carmack/status/486660710672248833
ie: you'll see the color values do something like this:
R:4 G:4 B:4 -- very dark grey
R:4 G:4 B:3 -- very dark orangish band
R:4 G:3 B:3 -- very dark reddish band
R:3 G:3 B:3 -- back to very dark grey
The solution to this, and what Photoshop and Nuke do when creating gradients is effectively calculate the gradient at greater than 8 bit per pixel color accuracy and add very small amount of noise.
Here's a close up of that gradient from Nuke heavily brightened in Photoshop to show the noise.
https://dl.dropboxusercontent.com/u/49665566/gradientNoise.png
Unfortunately for this to work well the dithering process has to occur as the last pass on the image before being sent to the display. Any distortion or image modification can cause obvious patterns or streaks to appear. Film noise have been a popular method to help hide these artifacts in darker games, but this isn't a good option for VR.
edit: Also I'm pretty sure Carmack saw this post too as he complained about the issue (and solution) on Twitter.
https://twitter.com/ID_AA_Carmack/status/486660710672248833
Quick Links
- Horizon Developer Support
- Quest User Forums
- Troubleshooting Forum for problems with a game or app
- Quest Support for problems with your device
Other Meta Support
Related Content
- 2 months ago
- 2 months ago
- 7 years ago