TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

How to (and how not to) fix color banding

148 pointsby asicspover 1 year ago

9 comments

Pathogen-Davidover 1 year ago
&gt; Many Laptop screens are in fact 6-bit panels performing dithering to fake an 8-bit output. This includes even high-priced workstations replacements, like the HP Zbook Fury 15 G7 and its 6-bit LCD panel, that I sit in front of right now.<p>This made me double-check the date of the article (it&#x27;s from 2023.)<p>The author&#x27;s laptop appears to have launched in 2020. I&#x27;m astounded any manufacturer would think this is even remotely acceptable this day and age, much less on such a high-end device. (Going off the current generation, these laptops start around $3k.)<p>Is this actually that common or did the author just get unlucky?
评论 #38794915 未加载
评论 #38794658 未加载
评论 #38801422 未加载
petermcneeleyover 1 year ago
This can also be done temporally not simply spatially. <a href="https:&#x2F;&#x2F;www.shadertoy.com&#x2F;view&#x2F;tslfz4" rel="nofollow">https:&#x2F;&#x2F;www.shadertoy.com&#x2F;view&#x2F;tslfz4</a>
FrostKiwiover 1 year ago
Many thanks for posting my article here &lt;3
rsaxvcover 1 year ago
Another GPU friendly approach is mixing with blue noise. I used it in a display driver with XRGB8888 framebuffer and Y2 pixels, and it worked great.
评论 #38795372 未加载
some1elseover 1 year ago
Apple UI blur &amp; vibrancy[1] look smooth without having to introduce noise. They have the advantage of owning the entire pipeline with phones &amp; laptops, but the effect is decent even on budget external displays.<p>1: <a href="https:&#x2F;&#x2F;developer.apple.com&#x2F;design&#x2F;human-interface-guidelines&#x2F;materials" rel="nofollow">https:&#x2F;&#x2F;developer.apple.com&#x2F;design&#x2F;human-interface-guideline...</a>
londons_exploreover 1 year ago
This is great... but it&#x27;s at the wrong level.<p>The LCD itself should ideally be a nice HDR LCD, but if it isn&#x27;t, it should apply time-dependant error diffusion dithering. Ie. if you took a photograph, you would see a 6-bit or whatever error diffused image, but that dither pattern changes at 60fps. That should happen entirely within the firmware of the screen, and is actually easy to do (some types of dithering require no RAM, others require 1 line of pixels as a buffer).
评论 #38796271 未加载
评论 #38800363 未加载
评论 #38795173 未加载
评论 #38802082 未加载
MauranKilomover 1 year ago
Just dropping this here, because there is more to this issue in real-world scenarios:<p><a href="https:&#x2F;&#x2F;loopit.dk&#x2F;banding_in_games.pdf" rel="nofollow">https:&#x2F;&#x2F;loopit.dk&#x2F;banding_in_games.pdf</a><p>(Not my talk, but I found it enlightening.)
评论 #38802183 未加载
kevingaddover 1 year ago
My recommendation is to do the equivalent of FRC in your shaders. I use one of the dither functions from <a href="https:&#x2F;&#x2F;developer.oculus.com&#x2F;blog&#x2F;tech-note-shader-snippets-for-efficient-2d-dithering&#x2F;" rel="nofollow">https:&#x2F;&#x2F;developer.oculus.com&#x2F;blog&#x2F;tech-note-shader-snippets-...</a> to break up banding in my geometry rasterization shaders that I use for rendering all my UI elements. It looks good in static images and fantastic in motion since the dithering pattern shifts every frame.<p>One thing to watch out for is that if you&#x27;re alpha blending, you need to be fairly cautious about how you dither and multiply. Premultiplied alpha does not get along with dithering, so the output from your shaders needs to be dithered but NOT premultiplied, with premultiplication performed by the GPU&#x27;s ROPs (they typically seem to operate above 8 bits of precision.) If you don&#x27;t do this you will get really nasty banding on alpha fades even though you dither. Also, counter-intuitively, you may not want to dither the alpha channel (test it yourself, ymmv)<p>When dealing with sRGB and linear space it can also be important whether you dither before or after the color-space conversion.
评论 #38799745 未加载
lynndotpyover 1 year ago
Are there any debanding methods that add a point to the color channels?<p>E.g. A delta of +(1, 1, 1) in RGB space would have six intermediary (but not perceptually evenly spaced) values, e.g. (1,0,0), (0,0,1), (0,1,0), (1,0,1), (0,1,1), and (1,1,0).<p>This might be something dithering already does (and I just don&#x27;t understand it).
评论 #38795701 未加载
评论 #38799661 未加载