View Single Post
Old 08-27-2012, 11:29 AM   #5
geekmaster
Carpe diem, c'est la vie.
geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.geekmaster ought to be getting tired of karma fortunes by now.
 
geekmaster's Avatar
 
Posts: 6,433
Karma: 10773670
Join Date: Nov 2011
Location: Multiverse 6627A
Device: K1 to PW3
Back before I created the "formula 42" dithering (when I got my first K3), I did an unpublished "proof of concept" demo where I attempted to do a line-by-line refresh to wipe a full-refresh image on top of a previous image. I discovered that by drawing each line as all black then all white, and repeating about 20 times, you can end up with a line that is significantly whiter than even repeating three full-flash clears. And after shaking the black and white particles back and forth many times between black and white like that, you can also end up with much blacker than a full black screen after multiple full-flash clears.

While playing with that code, I also discovered an undesirable side-effect. The eink display consists of many tiny beads for each pixel. Each bead contains many black and white oppositely-charged particles. The charged particles are attracted to opposite front and back surfaces when an electric charge between tiny row and column grid wires on the front and back screen surfaces. That makes the charged particles move to the front or back by electrostatic attraction. Grays are made with complex alternating current waveforms applied to the grids to leave a controlled complex mixture of charged particles behind. The undesirable side-effect of the electrostatic attraction method of controlling charged particles is that an electric field spreads out in space and weakly affects nearby beads in adjacent pixels. This causes a slight ghosting halo around stuff, which you can see if you draw a black line on a white background and then draw an identical white line on top of it (which leaves a slightly visible "gray halo" outline around it). Another way to see it is to draw a filled black square, then delay a bit, then draw another fillied black square next to it, forming a black rectangle. You will be able to clearly see the seam between the two squares, because some electric charge from the second black square made the edge pixels of the first square even "more black" (blacker than black). From this test, I started a new demo (which never got past the "proof of concept" stage and was not yet published).

I was able to display quite visible white letters on top of a pure white background that had been erased multiple times with full-flash updates, and I was able to display quite visible black letters on top of a pure black background. I was going to call it my "whiter-than-white/blacker-than-black" demo (or some cute name to imply that). But I did not clean it up enough to publish it.

Anyway, the point of this story is that you CAN do a full refresh WIPE of one image onto another (which is what this thread is about), but there can be visible side effects beyond the fact that it takes MUCH more time to do than the built-in full-screen full-flash update. However, by controlling the line-by-line refresh to create blacker-than-black and whiter-than-white, you can create a much higher-contrast image on the display than by normal methods (and it looks even better on the K4 and K5, which normally look somewhat low contrast when compared side-by-side with a K3).

EDIT: If you want to repeat my experiments, you need to adjust the delay between line redraws, to allow each one to complete before starting the next one. Also, the "formula 42" dither method may be more appropriate for experimenting with this stuff than hacking the gmplay code.

EDIT2: There is certainly room for more experimentation in this area, so be sure to post your results.

EDIT3: What I described above was done in a "native mode" app (scripting in this case, which I planned to convert to C some day). It could be added to other native mode apps such as hawhill's muPDF project, but would be more difficult to add to the desktop framework.

Last edited by geekmaster; 08-27-2012 at 11:49 AM.
geekmaster is offline   Reply With Quote