Ok, now lets see why 3dfx might claim this magical 22-bit number. Assume for a moment that 3dfx uses a technique like I described before, and I can provide some mathematical proof for the 22 bits. If we assume that they use a 2 by 2 filter or a linear one dimensional filter with coefficients (1 - 2 -1) then we know that at the end you make the average by dividing by 4 (sum of the colors divided by 4). If you have a number and you divide it by four then there are 4 possible fractional parts: 0, 25, 50 and 75. For example:

32 / 4 =  8,00 Fractional part is 00
33 / 4 =  8,25 Fractional part is 25
34 / 4 =  8,50 Fractional part is 50
35 / 4 =  8,75 Fractional part is 75

These are the only possibilities there are, and these fractional parts show the gain in bits. We can have 4 different fractional parts. The whole number (8 in the case of the example) is equal to our 16-bit accuracy, and through the division (filtering), we can find the 4 intermediate results (the fractional parts). These intermediate results are the gain in bit depth. There are 4 different cases. If we want to encode these 4 extra cases in terms of bits, then we need 2 extra bits ( 2 * 2 = 4 ).

Based on this we now know that we have a gain of 2 bits per color component. 16-bit color uses 5 bits to encode Red and Blue and 6 bits to encode Green. Each of these components can gain 2 bits by the filter operation. This means that Red and Blue will have 5 + 2 =7 bits as a result and Green has 6 + 2 = 8 bits as a a result. In total that gives us 7 + 8 + 7 = 22 bits (Thanks to Dave Govek for pointing out this mathematical link).

Some quick notes here. This is only true in terms of bits. There is no rule that says that the interpolation (done by the filter) is 100% correct. The values that result from this filtering are only "pseudo" 22-bit, they are not real 22-bit. For example, according to this math, the Green component should have an accuracy of 8 bits. That's the same accuracy as our original 24-bit input. However, there is no guarantee that these resulting "pseudo" 8 bits are equal to the "original" 8 bits. The "pseudo" values are just an approximation and the 22 bits are just the mathematically possible amount of different resulting colors. There is no proof that the output is perfectly related to the input.

Even more, as I pointed out in the first part of the article, it is sometimes necessary to exclude values from the filtering operation to maintain detail. By doing this, the detail is maintained but color accuracy is lost, so the resulting color resolution will be much closer to 16-bit than to 22-bit at edges. In color gradient zones, the color resolution will be 22-bit most of the time.