- 125 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 11:42:26 ]
- プログラマブルシェーダについて質問です。
bool型定数を使った静的分岐をやろうとしました。 ttp://msdn.microsoft.com/ja-jp/library/bb944006(VS.85).aspx >静的分岐では、ブール型のシェーダー定数に基づいてシェーダー コード ブロックのオン/オフを切り替えることができます。 >これは、現在レンダリングされているオブジェクトの種類に基づいて >コード パスを有効または無効にできる便利な方法です。 >描画呼び出しの間では、どの機能を現在のシェーダーでサポートするかを決定し、 >その動作に必要なブール フラグを設定できます。 >ブール定数で無効にされたステートメントは、シェーダー実行中にスキップされます。 下記のようにやってみたのですが、 fcx.exeでコンパイルしたものを覗いたところ、cmp命令が使われてしまっていました。 それでは分岐による負荷がかかってしまいますよね。 分岐負荷がかからないコードブロック単位での静的分岐とは、どうやるのでしょうか? bool UseTexture; float4 PS(VS_OUTPUT In) : COLOR { if (UseTexture) { In.Color *= tex2D(DecaleSamp, In.TexDecale); } return In.Color; }
|

|