I don?¢_Tt use Direct3D, but googling gave me this for multiplicative blending
device.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
device.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
Multiplying will kind of do what you want, incoming white fragments won?¢_Tt affect what was already there, but darker fragments will darken it, if the destination is black the result will remain black. Alternatively you could use multitexturing with appropriate combining to do this with one pass, but I?¢_Tm not sure how comfortable it would be with Omega.