ちょっと質問です。DirextX 9.0、ピクセルシェーダ 2.0 を使っています。
バックバッファAにテクスチャBを、複雑な合成、
例えばスクリーン合成やオーバーレイ合成を行いたいのですが、方法が分かりません…。
AやBの大きさは、コンパイル時には予想できないとします。

オーバーレイ合成は以下の計算式になります。

if (dst < 0.5) result = 2 * dst * src;
else result = 1 - 2 * (1 - dst) * (1 - src);

シェーダを使っても dst の値は取得できないし、固定パイプラインでも上手く行きません。

新たなバッファCを準備し、AとBの2つをシェーダの入力とするしかないのでしょうか?
その場合、例えばAの大きさが 800×600、Bの大きさが 10×10 程度でも、
書き込まないといけないピクセル数は 800×600 になってしまい時間がかかります。
もし B が1枚じゃなく B1、B2、… と多くあった場合、ひどいことになってしまいます。

スクリーン合成やオーバーレイ合成が、そんな特殊なこととは思えないので、
もっと手軽な方法があると思うのですがなかなか見つからず…。何か方法はないでしょうか?