DirectX でピクセル シェーダーと頂点シェーダーをデバッグする方法を見つけようとしています。Windows 用の Pix を使用してみましたが、非常にバグが多く、実質的に操作できないことがわかりました。自分のアプリケーション内でこれらのシェーダーをデバッグできる代替手段はありますか?
4 に答える
要するに、違います。
はい、pixは少しバグがありますが、最初のリリースから大幅に改善されています。最新のSDKを実行していることを確認してください。
hlsl シェーダーをデバッグするためのサード パーティ製ツールについては知りませんが、いくつかの簡単な手法を使用してデバッグするのは良い経験でした。
CPU にレンダー ターゲットをコピーしてビットマップに保存するか、ターミナルに出力するか、CPU デバッガーでアクセスするだけです。
バグがある場合は、最初に使用するバッファが本当に正しい値を持っているかどうかを確認する必要があります。最初は、いくつかのテクスチャが間違ったパラメータで作成されたり、データが別の順序で期待されることがよくあります...私の経験ではこれは一般的なエラーの原因です。
デバッグ情報を色で出力するだけです。たとえば、255*(normal+1) を r,g,b として出力したり、いくつかの中間シェーダー変数を色として出力したり、シェーダーの境界内にあるかどうかを確認して、境界内にある場合は白を出力したり、黒を出力したりできます。そうでない場合。それは通常役立ちます。
PIX for Windows には DirectX SDK が付属しており (2010 年 6 月から確認できます)、状態ごとに設定している内容を視覚的にデバッグし、シェーダーを 1 行ずつ実行することができます。その命の恩人です。