2番目のテクスチャをアルファマスクとして使用して、テクスチャにフェードアウトを発生させることができるシステムを作成しようとしています。
ステージ0でカラーテクスチャをロードし、ステージ1でマスクテクスチャをロードします。アルファ値がマスクに基づいており、スライドD3DTA_CONSTANTを使用してフェードを出し入れできるように、それらを正しくステージングすることができます。問題は、利用可能なD3DTAから抜け出せないような特定の動作を作成しようとしていることです。
基本的に、「step」と呼ばれる値と「vague」と呼ばれる値の2つの値が必要です。'vague'値はエフェクト全体で一定のままであり、'step'引数は0から始まり、数フレームにわたって255に増加します。次の動作を作成しようとしています。
*'step'の値よりも小さいマスクアルファ値を持つテクセルは、ゼロアルファで描画します。
*「step」+「vague」より上のマスクアルファ値を持つテクセルは255アルファで描画します。
*'step'と('step' +'vague')の間の範囲のマスクアルファ値を持つテクセルは、alpha' step'がゼロalphaであり、alpha('step' +'vague')がで描画するようにスケーリングされたalphaで描画します最大アルファ。
言葉で説明するのは難しいので、これは関数を示すグラフです:
http://imageshack.us/photo/my-images/834/desiredalphamaskfunctio.png/
私が遭遇している主な問題は、中間範囲(stepとstep + vagueの間)が0から255の間の値を「ストレッチ」するようにテクスチャステージを構成する方法を理解できないことです。直接的なものはありません。除算または乗算、変調だけなので、明白な方法でそれを行うことはできませんが、まだ私には起こっていない方法があると確信しています。(私はD3DTOP_MULTIPLYADDにいくらかの希望を持っていましたが、「乗算」は単なる別の変調であることが判明しました。)
誰かアイデアはありますか?
アドバイスをよろしくお願いします。