On Thu, Nov 12, 2009 at 2:07 AM, Brian Wang <brian.wang.0...@gmail.com> wrote:
> [ snip ]
>> I really want to know screenshots of it. Really, Raster would know the
>> lack of dithering and blockier gradients because he has "eagle's
>> eyes", but generally you see minor glitches most people will not
>> notice. The biggest one so far is blending white on white, but I even
>> worked it around and it should handle this special case (giving you
>> white instead of green-ish gray).
>
> These are all captured on my x86 box:
>
> Home screen:
> http://cool-idea.com.tw/brian/x11-home.png
> http://cool-idea.com.tw/brian/x16-home.png
>
> Music:
> http://cool-idea.com.tw/brian/x11-music.png
> http://cool-idea.com.tw/brian/x16-music.png
>
> The artifacts are easily noticeable.  The background image's gradients
> are of 'big' steps.  The artifacts are even more obvious on my
> device's LCM, which is of lower DPI.  Is it due to the colors or the
> scaling?
>
> For the 'music' x11-16 screenshot, the text is all broken.  IMHO, this
> is due to my font, which is a truetype font with bitmaps info for
> smaller font sizes (bitmap for smaller font and scaler for larger font
> since scaler Chinese font look bad for small text).


Damn, you did fall in the following bugs:

   - no smooth scaling for 16bpp: background is very noticeable with
that, as well as some icons and even the elementary clock parts. The
reason is: before there was no scale cache, thus there was no meaning
in keep doing scale of UI parts, thus things like scaling were just
used during effects or photos, real UI elements were designed to fit
their screens and never scale (so faster, pixel perfect).
   - images with transition colors get "bands": as said before, if you
have some gradient that is very small difference from color A to color
B, then the missing resolution (lost bits from R, G, B) are easy to
spot. Together with problem 1 (no smooth scaling) mentioned above, it
will look like crap. Instead, just avoid using these gradients where A
and B are too close.

the first point is fixable, just need someone with time and motivation
to do so (I have none). The second is not, needs help from design
team. Well, design team could solve both problems, as you really
should not be rescaling your interface elements.

Last but not least, don't use text effects: they are slow.


>> For instance Canola2 use 16bpp which very colorful and rich visual.
>> Actually I wrote 16bpp engine for Canola2 project and designers were
>> always carefully checking all the details:
>>
>>    http://openbossa.indt.org/canola2/
>
> Yes, I've seen the demo.  Very cool visuals.  I just knew that it uses 
> 16bpp...

As I said before, you need to do design together with development, one
needs to help the other and then you have good software.

You can trade this care and waste more CPU, doing dithering to solve
band problems by using 32bpp engine. In some cases you don't have many
fancy effects and cpu is not a problem.


>> I'd recommend watching out rectangle colors that are supposed to match
>> image colors. Remember that 16bpp is RGB565, that is 5 bits for both
>> red and blue, 6 for green. So you basically discard the lower bits of
>> each full 0-255 values in 32bpp. But for images we apply dithering
>> when converting from 32->16 in order to avoid blocky gradients and
>> such, for those cases you will likely get different color (1 value up
>> or down) for each component based on nearby pixel.
>>
>> The safest thing to do is to calc 16bpp colors using:
>>
>> dr = (r >> 3) << 3
>> dg = (g >> 2) << 2
>> db = (b >> 3) << 3
>>
>> The attached script should help you in your task.
>
> Do you mean that I have to manipulate each image to make it use only
> the upper 5/6/5 bits for R/G/B?

If you change them, they'll likely suck as well (designers did try
some tricks to convert images to "rgb565" in photoshop without luck).
You need to design your system using these limits in mind.

1 - Avoid gradients from colors that vary around the lost bits. If
before you had a gradient from gray 220 to 240, or 20 levels to play
with. So 220,220,220 in 32bpp is already inexistent in 16bpp, run the
script and discover 216,220,216 is all you have!!! Of course, this is
green-ish and not gray as expected, first thing to fix and use
216,216,216 instead. If you run:

       for n in `seq 220 240`; do rgb16bpp.py $n $n $n; done | grep 16bpp | uniq

from the initial 20 levels, all you get are 6 different levels!!! If
you had 80 pixels to spread this, before you'd change the color every
4 pixes, now every 13, much easier to notice... even more if the color
is bit green nown and then.

2 - Avoid light colors, specially gray->white where all components
must be the same. Using light colors you're likely to reach color
boundaries and human eyes will be likely to spot problems. As said
before, this is even more visible with gray that gets more green than
other colors

3 - Try to use the color that you have more bits, that is, green. This
is hard, I know, but can bring some benefits.


Looking at what I wrote, you might wonder "oh my god, impossible". But
if you try to do an Palm Pre like user interface with 16bpp it will
look just nice! Just get a great picture with various colors and sharp
transitions (then avoiding gradient), add semi-transparent black
background with UNSCALED lightning details images on top (like
elementary buttons).


BR,
-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: barbi...@gmail.com
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to