• Direct3D 11のアルファテスト

    2011年07月16日 12時25分
    前回の続き。

    ここまで来ればあとは簡単です。

    肌が表示されていた部分が透明になっているということは、
    透明ピクセルの時もZバッファへの書き込みがされているということです。

    アルファテストを入れて、透明ピクセルの時はZバッファに書き込まないようにします。


    ただ、Direct3D 11にはアルファテストという機能自体はありません。
    ピクセルシェーダで代わりに処理をしてあげる必要があります。



    通常、ピクセルシェーダは最後にピクセル情報を返します。

    例としてはこんな感じ
    1return float4(ambient + diffuse + specular, alpha);



    ここで、ピクセルシェーダでのみ使用出来る制御構文discardを使用します。
    1// アルファ値0の場合は表示しない
    2if (alpha == 0)
    3    discard;


    discardを使用するとピクセルを出力しないため、Zバッファへの書き込みもキャンセルすることが出来ます。


    アルファ値0の時にdiscardをするように処理すると、正常に表示されるようになりました。
    discard使用



    大体動いた気がするので、現時点のソースを置いておきます。参考になるかな。

    コメントを書く

    名前
    本文
    編集用パスワード
    管理者のみ閲覧