\pard\tx520\tx1060\tx1600\tx2120\tx2660\tx3200\tx3720\tx4260\tx4800\tx5320 Q: There seems to be a problem in compositing under 2.0. Using the CompositeLab in /NextDeveloper/Examples on a 2-bit screen, set the following parameters and use the SOVER operation:\
Dest gray=0.8 opacity=1 (light gray opaque destination)\
\f1\fs24\fi0 \
\f0\fs28 You will see that the result is the same color as the destination. Thus the 30% coverage from the white source is having no effect at all! Now change the source opacity down to 0; this causes no change in the result. What's going on here?\
\f1\fs24 \
\f0\fs28 A: The 2.0 behaviour is correct. Assume the case where the source is all white and is 33% opaque. Say the destination is 66% white and opaque. (This assures that we are using exact pixel values with no dithering.) The SOVER formula is:\
\f0\fs28 which is rounded to 6/9, given that compositing only works on a per-pixel basis. Changing the opacity all the way down to 0 simply changes the resulting pixel to 6/9, thus no color change occurs.\
\f1\fs24 \
\f0\fs28 Now using the parameters in the question\
Dest gray=0.8 opacity=1 (light gray opaque destination)\
\f1\fs24\fi0 \
\f0\fs28 We see that there are some source pixels with opacity of 0, and a few with opacity of 1/3. Source color is 1 in all cases. There are some dest pixels with gray of 1 and others with 2/3; opacity is 1 in both cases.\
\f1\fs24 \
\f0\fs28 Thus every resulting pixel is computed from one of four formulas:\
Thus the result is equal to the dest color in all cases. \
\
If you wish to composite in a more accurate fashion, you can use 8-bit deep grayscale windows. However, this will use up a lot more memory and is probably not worth it.\