rokdcasbah posted on Dec 26 2006 at 07:36 PM said:
Micket posted on Dec 26 2006 at 11:36 AM said:
But why the floyd-steinberg hate?
why indeed?
actually my guess is because for smooth gradients you don't want to use anything that has a chance of developing artifacts (thus defeating the purpose of dither). you can get away with a simpler dither on a more complicated image, but even a random dither can have artifacts on something like a smooth gradient, it's just one of those things you need to tweak a lot. not sure what the "dynamic" is about but i'm guessing it means that the dither is intelligent as to the range of values it uses, rather than applying the same scale of random noise everywhere...using less noise where the image bands less, and so on.
i'm interested in seeing how you acheive your dithering, a_sn (tech demo maybe??) as dsp stuff is right up my alley. good luck though.
Haha I don't really hate the floyd-steinberg dithering, I'm just saying I can use something better
. Random dithering does create artifacts (noise, or grain if you prefer), but dynamic (by dynamic understand animated) random dithering has these artifacts changing all the time.
If you know some about DSP you'll understand this : since these random artifacts change and are defined in a stochastic manner, and that our eyes perform some averaging of this noise through time (when you see something at 60 FPS (or even more), your eyes mix some frames together, and that's simiilar to averaging, in the same way as Mario Kart Super Circuit fakes half transparency, by turning an image on and off at 60 FPS so it looks semi-transparent to us), the averaging reduces the noise and this average matches closely to the original color values that we could not display with our reduced color depth.
Anyways, a tech demo? Like, a GP2X program showing many pictures made of gradients (or even pure gradients) first being displayed without any dithering in RGB565 mode and then being displayed using my dynamic random dithering? (shouldn't I use another word than dynamic to say animated? sounds good since it's the opposite of static but still it seems to cause confusion). I could totally do that, pretty quickly, actually what will take most of the time will be to find pictures that would fit the job. If you got some pictures that look like aweful in RGB565 and real nice in RGB888 don't hesitate to show me
Micket posted on Dec 26 2006 at 05:36 PM said:
Anyway, since you seem to aim for the highest quality of color, i'd say go for RGBA8888. Although there are probably not many pixels that will differ (and if so, very little) even with RGBA5658.
Perhaps a few tests and comparisons is the best way to decide.
Well I started using RGBA8888, but I faced performance issues when converting the whole RGB888 screen to the RGB565 framebuffer (even when optimized to the death in ASM that part took 10 ms at every frame), so I decided to change the way I'd do it but I wasn't sure what to move on to. But I agree with you, tests will be needed, right now I think I'm going to mainly try to do most things in RGBA5658.
EDIT : Weirdly enough what I call "dynamic random dithering" seems to be poorly documented, and the term itselves is unknown to google, and I have been unable to find any use of an alternative term to describe this, anyways, I found
this page (look at 2. Random Dithering to the people) that backs my claims about the use in video games of a random dithering that changes over time in order to look smooth.