D3D dual source color blending

D3D10 では dual source color blending なる便利機能があることを発見しました。
今まで pixel shader から 1つの render target に対して出力できるカラーは
RGBA の 4ch のみでした。

そのため例えば SrcAlpha + InvSrcAlpha などを使って pixel 毎の blend factor
として alpha を使用してしまうと、
Render Target の alpha にも任意の値を書き込みたいけどできないという
矛盾が生じてしまいます。

この新機能を使えば pixel shader からの出力が 4ch ×2 (SV_TARGET0, SV_TARGET1)
になるので、Render Target の alpha には diffuse や depth といった任意の値を
書き込みつつ、さらに任意の blend factor でブレンドできるといった設定が
可能になります。

これは便利だ