エフェクト ステート グループ (Direct3D 10)
エフェクト ステートは、式として表される名前と値のペアです。
- ブレンディング ステート
- 深度/ステンシル ステート
- ラスタライザー ステート
- サンプラ ステート
- エフェクト オブジェクト ステート
- ステート オブジェクトの定義と使用
ブレンディング ステート
ALPHATOCOVERAGEENABLE BLENDENABLE SRCBLEND DESTBLEND BLENDOP SRCBLENDALPHA DESTBLENDALPHA BLENDOPALPHA RENDERTARGETWRITEMASK | D3D10_BLEND_DESC のメンバー |
深度/ステンシル ステート
DEPTHENABLE DEPTHWRITEMASK DEPTHFUNC STENCILENABLE STENCILREADMASK STENCILWRITEMASK | D3D10_DEPTH_STENCIL_DESC のメンバー |
FRONTFACESTENCILFAIL FRONTFACESTENCILZFAIL FRONTFACESTENCILPASS FRONTFACESTENCILFUNC BACKFACESTENCILFAIL BACKFACESTENCILZFAIL BACKFACESTENCILPASS BACKFACESTENCILFUNC | D3D10_DEPTH_STENCILOP_DESC のメンバー |
ラスタライザー ステート
FILLMODE | D3D10_FILL_MODE |
CULLMODE | D3D10_CULL_MODE |
FRONTCOUNTERCLOCKWISE DEPTHBIAS DEPTHBIASCLAMP SLOPESCALEDDEPTHBIAS ZCLIPENABLE SCISSORENABLE MULTISAMPLEENABLE ANTIALIASEDLINEENABLE | D3D10_RASTERIZER_DESC のメンバー |
サンプラ ステート
Filter AddressU AddressV AddressW MipLODBias MaxAnisotropy ComparisonFunc BorderColor MinLOD MaxLOD | D3D10_SAMPLER_DESC のメンバー |
例については、「サンプラー型 (DirectX HLSL)」を参照してください。
エフェクト オブジェクト ステート
エフェクト オブジェクト | マップ先 |
---|---|
RASTERIZERSTATE | ラスタライザー ステート ステート オブジェクト |
DEPTHSTENCILSTATE | 深度/ステンシル ステート ステート オブジェクト |
BLENDSTATE | ブレンディング ステート ステート オブジェクト |
VERTEXSHADER | コンパイル済み頂点シェーダー オブジェクト |
PIXELSHADER | コンパイル済みピクセル シェーダー オブジェクト |
GEOMETRYSHADER | コンパイル済みジオメトリ シェーダー オブジェクト |
DS_STENCILREF AB_BLENDFACTOR AB_SAMPLEMASK | D3D10_PASS_DESC のメンバー |
ステート オブジェクトの定義と使用
ステート オブジェクトは、FX ファイルの中で次の形式によって宣言します。StateObjectType は上記のいずれかのステートです。MemberName は、既定以外の値を指定する任意のメンバーの名前です。
StateObjectType ObjectName { MemberName = value; ... MemberName = value; };
たとえば、AlphaToCoverageEnable と BlendEnable[0] を FALSE に設定したブレンディング ステート オブジェクトをセットアップするには、次のコードを使用します。
BlendState NoBlend { AlphaToCoverageEnable = FALSE; BlendEnable[0] = FALSE; };
ステータス オブジェクトをテクニック パスに適用するには、「エフェクト テクニックの構文 (Direct3D 10)」に記載されているいずれかの SetStateGroup 関数を使用します。たとえば、前述の BlendState オブジェクトを適用するには、次のコードを使用します。
SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
ステートの使用に関するチュートリアルについては、「ステート管理」を参照してください。