シザー テスト (Direct3D 9)
シザー テストでは、レンダー ターゲットのユーザー定義の矩形サブセクションである、シザー矩形の外側にあるピクセルをカリングします。
シザー矩形を使用すると、ゲーム空間が描画されるレンダー ターゲットの領域を示すことができます。矩形の外側の領域はカリングされ、ゲームの GUI 専用となることができます。シザーテストでは矩形以外の領域はカニングできません。
シザー矩形はレンダー ターゲットより大きくは設定できませんが、ビューポートより大きく設定することはできます。
シザー矩形はデバイスのレンダリング ステートで管理します。シザー テストは、レンダリング ステートを TRUE または FALSE に設定することで、有効または無効にすることができます。このテストは、フラグメント カラーを計算した後、アルファ テストの前に実行します。IDirect3DDevice9::SetRenderTarget はシザー矩形を完全なレンダー ターゲットにリセットします。これはビューポイントのリセットに似ています。IDirect3DDevice9::SetScissorRect は状態ブロックに記録されます。すべてのステート設定 (D3DSTATEBLOCKTYPE の D3DSBT_ALL) を使った IDirect3DDevice9::CreateStateBlock も記録されます。また、シザー テストはデバイスの IDirect3DDevice9::Clear 処理にも影響します。
// Methods
HRESULT IDirect3DDevice9::SetScissorRect(CONST RECT* pRect);
HRESULT IDirect3DDevice9::GetScissorRect(RECT* pRect);
// New RenderState, values are TRUE or FALSE
D3DRS_SCISSORTESTENABLE
// New hardware cap
D3D9CAPS.RasterCaps -> D3DPRASTERCAPS_SCISSORTEST;
既定のシザー矩形はビューポート全体です。
シザー テストは、次の図に示すとおり、ピクセル シェーダーまたは固定機能パイプラインによるピクセル処理の終了直後に行われます。
図形 1. シザー テストのフローチャート