D3D12_RASTERIZER_DESC 構造体 (d3d12.h)

ラスタライザーの状態について説明します。

構文

typedef struct D3D12_RASTERIZER_DESC {
  D3D12_FILL_MODE                       FillMode;
  D3D12_CULL_MODE                       CullMode;
  BOOL                                  FrontCounterClockwise;
  INT                                   DepthBias;
  FLOAT                                 DepthBiasClamp;
  FLOAT                                 SlopeScaledDepthBias;
  BOOL                                  DepthClipEnable;
  BOOL                                  MultisampleEnable;
  BOOL                                  AntialiasedLineEnable;
  UINT                                  ForcedSampleCount;
  D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster;
} D3D12_RASTERIZER_DESC;

メンバー

FillMode

レンダリング時に使用する塗りつぶしモードを指定する、 D3D12_FILL_MODE型指定された値。

CullMode

指定した方向に向いている三角形が描画されないことを指定する、 D3D12_CULL_MODE型指定された値。

FrontCounterClockwise

三角形が正面向きか背面向きかを決定します。 このメンバーが TRUE の場合、頂点がレンダー ターゲット上で反時計回りに配置されている場合、三角形は前面と見なされ、時計回りである場合は背面と見なされます。 このパラメーターが FALSE の場合、その逆は true です。

DepthBias

指定されたピクセルに追加された深度値。 深度バイアスの詳細については、「 深度バイアス」を参照してください。

DepthBiasClamp

ピクセルの最大深度バイアス。 深度バイアスの詳細については、「 深度バイアス」を参照してください。

SlopeScaledDepthBias

特定のピクセルの傾きのスカラー。 深度バイアスの詳細については、「 深度バイアス」を参照してください。

DepthClipEnable

距離に基づいてクリッピングを有効にするかどうかを指定します。

ハードウェアは、ラスター化された座標の x と y のクリッピングを常に実行します。 DepthClipEnabledefault-TRUE に設定すると、ハードウェアは z 値もクリップします (つまり、ハードウェアは次のアルゴリズムの最後のステップを実行します)。


0 < w
-w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)
-w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden)
0 <= z <= w

DepthClipEnableFALSE に設定すると、ハードウェアは z クリッピング (つまり、前のアルゴリズムの最後の手順) をスキップします。 ただし、ハードウェアでは "0 < w" クリッピングが引き続き実行されます。 z クリッピングを無効にすると、ピクセル レベルで不適切な深度順序が発生する可能性があります。 ただし、z クリッピングを無効にすると、ステンシル シャドウの実装が簡略化されます。 言い換えると、バック クリッピング 平面を超えるジオメトリに対する複雑な特殊なケース処理を回避できます。

MultisampleEnable

マルチサンプル アンチエイリアシング (MSAA) レンダー ターゲットで四角形またはアルファ線のアンチエイリアシング アルゴリズムを使用するかどうかを指定します。 四角形の線のアンチエイリアシング アルゴリズムを使用する場合は TRUE 、アルファ線のアンチエイリアシング アルゴリズムを使用する場合は FALSE に設定します。 このメンバーの詳細については、「解説」を参照してください。

AntialiasedLineEnable

線のアンチエイリアシングを有効にするかどうかを指定します。線の描画と MultisampleEnableFALSE の場合にのみ適用されます。 このメンバーの詳細については、「解説」を参照してください。

ForcedSampleCount

型: UINT

UAV のレンダリングまたはラスタライズ中に強制されるサンプル数。 有効な値は 0、1、4、8、および必要に応じて 16 です。 0 は、サンプル数が強制されていないことを示します。

メモForcedSampleCount を 1 以上に設定してレンダリングする場合は、次のガイドラインに従う必要があります。
  • 深度ステンシル ビューはバインドしないでください。
  • 深度テストを無効にします。
  • シェーダーが深度を出力しないことを確認します。
  • レンダー ターゲット ビューがバインドされていて (D3D12_DESCRIPTOR_HEAP_TYPE_RTV)、 ForcedSampleCount が 1 より大きい場合は、すべてのレンダー ターゲットに 1 つのサンプルのみが含まれるようにします。
  • サンプルの頻度でシェーダーを操作しないでください。 そのため、 ID3D12ShaderReflection::IsSampleFrequencyShader はFALSE を返します。
それ以外の場合、レンダリング動作は未定義です。

ConservativeRaster

保守的なラスター化がオンかオフかを識別するD3D12_CONSERVATIVE_RASTERIZATION_MODE型指定された値。

注釈

D3D12_GRAPHICS_PIPELINE_STATE_DESCにはラスタライザー状態構造が含まれています。

ラスタライザーの状態は、ラスタライザー ステージの動作を定義します。

ラスタライザーの状態を指定しない場合、Direct3D ランタイムではラスタライザーの状態に次の既定値が使用されます。

状態 既定値
FillMode D3D12_FILL_MODE_SOLID
CullMode D3D12_CULL_MODE_BACK
FrontCounterClockwise FALSE
DepthBias 0
DepthBiasClamp 0.0f
SlopeScaledDepthBias 0.0f
DepthClipEnable TRUE
MultisampleEnable FALSE
AntialiasedLineEnable FALSE
ForcedSampleCount 0
ConservativeRaster D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF
 
メモ機能レベル 9.1、9.2、9.3、10.0 の場合、MultisampleEnableFALSE に設定すると、サンプル数が 1 より大きいレンダー ターゲットでも、アンチエイリアシングなしですべてのポイント、線、三角形がレンダリングされます。 機能レベル 10.1 以降では、 MultisampleEnable の設定は MSAA に関してポイントと三角形には影響を与えず、次の表に示すように、ライン レンダリング アルゴリズムの選択にのみ影響します。
 
線レンダリング アルゴリズム MultisampleEnable AntialiasedLineEnable
エイリアス FALSE FALSE
アルファアンチエイリアシング FALSE TRUE
四辺形 TRUE FALSE
四辺形 TRUE TRUE
 

MultisampleEnable メンバーと AntialiasedLineEnable メンバーの設定は、マルチサンプル アンチエイリアシング (MSAA) レンダー ターゲット (つまり、サンプル数が 1 より大きいレンダー ターゲット) にのみ適用されます。 機能レベルの動作が異なるため、線描画を実行しないか、線が四辺形としてレンダリングされることを気にしない限り、MSAA レンダー ターゲットでレンダリングするたびに常に MultisampleEnableTRUE に設定することをお勧めします。

要件

要件
Header d3d12.h

こちらもご覧ください

CD3DX12_RASTERIZER_DESC

保守的なラスター化

コア構造

ラスタライザー順序指定ビュー