- 128 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:01:27 ]
- >>126-127
アドバイスありがとうございます。 静的分岐とは言え、さすがにON/OFFのチェンジはしたいので >>126や、>>127の@というわけにはいきません。 ひとまず、>>127のAではうまくいきました。 そこで再質問なのですが、グローバル定数は、uniformとして扱われるMSの説明に書いてある上、 1回の描画命令の間では不変ですよね? グローバル定数ではダメなのでしょうか?(ダメだったから>>125はダメだったわけですが…) 正直引数のuniformでやる方法ですと、 pass P0{ pixelShader = compile PIXELSHADER_TARGET PS( false );} pass P1{ pixelShader = compile PIXELSHADER_TARGET PS( true );} このようにtrueの場合とfalseの場合をいちいち定義しなければならず、 組み合わせが多い場合(ライトON/OFF、影ON/OFFなどなど)に組み合わせ爆発が厄介そうです。 uniform int の場合はintの取りうる範囲が多すぎるため、 PS(0) PS(1) のように定義しなければならないのはわかるのですが、 MSの説明を見る限り「bool型のシェーダ定数は特別扱いだよ」みたいに読めるのですが、 bool型を使うことによる利点のようなものは何かないのでしょうか? MSの説明を見て
|

|