エフェクト テクニックの構文 (Direct3D 11)

エフェクト テクニックは、次の構文を使用して宣言します (エフェクト グループの構文については「エフェクト グループの構文 (Direct3D 11)」を参照してください)。

TechniqueVersion TechniqueName  [ <Annotations > ] {     pass PassName [ <Annotations > ]      {         [ SetStateGroup; ]        [ SetStateGroup; ]        ...        [ SetStateGroup; ]     }  }

パラメーター

  • TechniqueVersion
    technique10 または technique11 です。Direct3D 11 の新規の機能 (5_0 シェーダー、BindInterfaces など) を使用するテクニックの場合は、technique11 を指定する必要があります。
  • TechniqueName
    (省略可能)エフェクト テクニックの名前を一意に識別する ASCII 文字列です。
  • Annotations >
    [in] (省略可能)エフェクト システムで無視される、1 つ以上のユーザー指定情報 (メタデータ) です。構文については、「注釈の構文 (Direct3D 11)」を参照してください。
  • pass
    必須キーワードです。
  • PassName
    [in] (省略可能)パスの名前を一意に識別する ASCII 文字列です。
  • SetStateGroup
    [in] 次のようなステート グループを 1 つまたは複数設定します。
    StateGroup 構文
    ブレンディング ステート
    SetBlendState( arguments ); 

    引数リストについては、「ID3D11DeviceContext::OMSetBlendState」を参照してください。

    深度/ステンシル ステート
    SetDepthStencilState( arguments ); 

    引数リストについては、「ID3D11DeviceContext::OMSetDepthStencilState」を参照してください。

    ラスタライザー ステート
    SetRasterizerState( arguments ); 

    引数リストについては、「ID3D11DeviceContext::RSSetState」を参照してください。

    シェーダー ステート
    SetXXXShader( Shader );

    SetXXXShader は、SetVertexShaderSetDomainShaderSetHullShaderSetGeometryShaderSetPixelShader、または SetComputeShader のいずれかです (これは、API メソッド ID3D11DeviceContext::VSSetShaderID3D11DeviceContext::DSSetShaderID3D11DeviceContext::HSSetShaderID3D11DeviceContext::GSSetShaderID3D11DeviceContext::PSSetShader、および ID3D11DeviceContext::CSSetShader と類似しています)。

    Shader は、シェーダー変数です。これは、次の方法をはじめとして数多くの方法で取得できます。

     SetXXXShader( CompileShader( shader_profile, ShaderFunction( args ) ) ); SetXXXShader( CompileShader( NULL ) ); SetXXXShader( NULL ); SetXXXShader( myShaderVar ); SetXXXShader( myShaderArray[2] ); SetXXXShader( myShaderArray[uIndex] ); SetGeometryShader( ConstructGSWithSO( Shader, strStream0 ) ); SetGeometryShader( ConstructGSWithSO( Shader, strStream0, strStream1, strStream2, strStream3, RastStream ) ); 
    レンダー ターゲット ステート 次のいずれかです。
     SetRenderTargets( RTV0, DSV ); SetRenderTargets( RTV0, RTV1, DSV ); ... SetRenderTargets( RTV0, RTV1, RTV2, RTV3, RTV4, RTV5, RTV6, RTV7, DSV ); 

    ID3D11DeviceContext::OMSetRenderTargets と同様です。

ステート グループの一覧については、「エフェクト ステート グループ」を参照してください。

この例では、ブレンディング ステートを設定します。

BlendState NoBlend {      BlendEnable[0] = False; };  ...  technique10 {     pass p2      {         ...         SetBlendState( NoBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );     } }

次の例では、オブジェクトをワイヤフレーム内にレンダリングするために、ラスタライザー ステートを設定します。

RasterizerState rsWireframe { FillMode = WireFrame; };  ...  technique10 {     pass p1      {       ....         SetRasterizerState( rsWireframe );     } }

この例では、シェーダー ステートを設定します。

technique10 RenderSceneWithTexture1Light {     pass P0     {         SetVertexShader( CompileShader( vs_4_0, RenderSceneVS( 1, true, true ) ) );         SetGeometryShader( NULL );         SetPixelShader( CompileShader( ps_4_0, RenderScenePS( true ) ) );     } }