ID3D12GraphicsCommandList1::SetViewInstanceMask メソッド (d3d12.h)
後続の描画で有効にするビュー インスタンスを制御するマスクを設定します。
構文
void SetViewInstanceMask(
[in] UINT Mask
);
パラメーター
[in] Mask
型: UINT
有効または無効にするビューを指定するマスク。 最上位ビットから始まるビット i が設定されている場合は、ビュー インスタンス i が有効になります。
戻り値
なし
解説
ビュー インスタンス マスクは、作成時に D3D12_VIEW_INSTANCING_FLAG_ENABLE_VIEW_INSTANCE_MASKING フラグを指定してビュー インスタンス マスクを宣言する PSO にのみ影響します。 ビュー インスタンス マスクを宣言する PSO を作成しようとすると、ビューインスタンスマスクをサポートしていないアダプターでは失敗します。
ビュー インスタンス マスクの既定値は 0 で、すべてのビューが無効になります。 これにより、ビュー インスタンス マスクを宣言するアプリケーションは、有効にするビューを明示的に選択するように強制されます。それ以外の場合は何もレンダリングされません。 ビュー インスタンス マスクが既定ですべてのビューを有効にした場合、アプリケーションは未使用のビューを無効にすることを忘れ、無駄な作業のためにパフォーマンスが失われる可能性があります。
バンドルは、ビュー インスタンス マスクを呼び出し元から継承せず、代わりに既定値は 0 です。 これは、実装レコードの描画方法に影響を与える場合、バンドルが記録されるときにマスク設定を認識する必要があるためです。 ただし、バンドルによって設定されたビュー インスタンス マスクは、バンドルの完了後も呼び出し元に保持されます。 これらの継承セマンティクスは、PCO のセマンティクスと似ています。
SV_ViewIDに依存するシェーダー コード パスは、マスクオフされたビュー インスタンスのシェーダー ステージでは実行されません。クリッピング、ビューポート処理、ラスター化は実行されません。 レンダリング中にマスクを検査する実装では、ビュー インスタンス マスクを宣言しない PSO に対してパフォーマンスが低下する可能性がありますが、通常は、マスクされたビューに関連付けられている作業をスキップすることによって生じるパフォーマンスの節約によって、ペナルティを克服できます。 スキップされた作業の頻度と量によっては、パフォーマンスが大幅に向上する可能性があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d12.h |