私はシェーダーに非常に慣れておらず、いくつかのチュートリアルを実行した後でも、全体について非常に混乱しています(実際、これは今日のシェーダーに関する2番目の質問です)。
2つのパスでシェーダーを作成しようとしています:
technique Technique1
{
pass Pass1
{
PixelShader = compile ps_2_0 HorizontalBlur();
}
pass Pass2
{
PixelShader = compile ps_2_0 VerticalBlur();
}
}
ただし、これはVerticalBlur()にのみ適用されます。Pass2を削除すると、Pass1のHorizontalBlur()にフォールバックします。私は何かが足りないのですか?たぶん、それは単に最初のパスの結果を2番目のパスに渡さないのですが、その場合、どうすればよいでしょうか?
また、私が読んだほとんどのチュートリアルではeffect.CurrentTechnique.Passes[0].Apply();
、効果を使ってスプライトバッチを開始した後に置くように言われています。ただし、これは何も変わらないようです。Passes [1]に設定することも、完全に削除することもできますが、それでもPass2しか取得できません。(ただし、Passes [2]に設定しようとするとエラーが発生します。)その場合、その行はどのように使用されますか?最近のバージョンではその必要性がなくなりましたか?
本当にありがとう!