次の方法で共有


効果変数の構文 (Direct3D 11)

効果変数は、このセクションで説明する構文を使用して宣言されます。

構文

基本的な構文:

DataTypeVariableName [ : SemanticName ] <Annotations> [ = InitialValue ];

完全な構文については、「 変数構文 (DirectX HLSL)」 を参照してください。

Name 説明
DataType 基本テクスチャ、順序付けられていないアクセス ビュー、シェーダー、または状態ブロックの種類。
VariableName 効果変数の名前を一意に識別する ASCII 文字列。
SemanticName 変数の使用方法に関する追加情報を示す ASCII 文字列。 セマンティックは、定義済みのシステム値またはカスタム ユーザー文字列のいずれかを指定できる ASCII 文字列です。
注釈 効果システムによって無視されるユーザー指定の情報 (メタデータ) の 1 つ以上の部分。 構文については、「 注釈構文 (Direct3D 11)」を参照してください。
InitialValue 変数の既定値。

 

すべての関数の外部で宣言された効果変数は、スコープ内でグローバルと見なされます。関数内で宣言された変数は、その関数に対してローカルです。

この例では、グローバル効果の数値変数を示します。

float4 g_MaterialAmbientColor;      // Material's ambient color
float4 g_MaterialDiffuseColor;      // Material's diffuse color
float3 g_LightDir[3];               // Light's direction in world space
float4x4 g_mWorld;                  // World matrix for object

この例では、シェーダー関数に対してローカルな効果変数を示します。

VS_OUTPUT RenderSceneVS( ... )
{
    float3 vNormalWorldSpace;
    float4 vAnimatedPos;

    // shader body
}

この例では、セマンティクスを持つ関数パラメーターを示します。

VS_OUTPUT RenderSceneVS( float4 vPos : SV_POSITION,
                         float3 vNormal : NORMAL,
                         float2 vTexCoord0 : TEXCOORD0,
                         uniform int nNumLights,
                         uniform bool bTexture,
                         uniform bool bAnimate )
{
  ...
}

この例では、グローバル テクスチャ変数の宣言を示します。

Texture2D g_MeshTexture;            // Color texture for mesh

テクスチャのサンプリングは、テクスチャ サンプラーを使用して行われます。 効果でサンプラーを設定するには、 サンプラーの種類を参照してください。

この例では、グローバルな順序付けされていないアクセス ビュー変数の宣言を示します。

RWStructuredBuffer<uint> bc : register(u2) < string name="bc"; >;
RWBuffer<uint> bRW;
struct S
{
   uint key;
   uint value;
};
AppendStructuredBuffer<S> asb : register(u5);
RWByteAddressBuffer rwbab : register(u1);
RWStructuredBuffer<uint> rwsb : register(u3);
RWTexture1D<float> rwt1d : register(u1);
RWTexture1DArray<uint> rwt1da : register(u4);
RWTexture2D<uint> rwt2d : register(u2);
RWTexture2DArray<uint> rwt2da : register(u6);
RWTexture3D<uint> rwt3d : register(u7); 
 This example illustrates declaring global shader variables.
VertexShader pVS = CompileShader( vs_5_0, VS() );
HullShader pHS = NULL;
DomainShader pDS = NULL;
GeometryShader pGS = ConstructGSWithSO( CompileShader( gs_5_0, VS() ), 
                                        "0:Position.xy; 1:Position.zw; 2:Color.xy", 
                                        "3:Texcoord.xyzw; 3:$SKIP.x;", 
                                        NULL, 
                                        NULL, 
                                        1 );
PixelShader pPS = NULL;
ComputeShader pCS = NULL;
This example illustrates declaring global state block variables.
BlendState myBS[2] < bool IsValid = true; >
{
  {
    BlendEnable[0] = false;
  },
  {
    BlendEnable[0] = true;
    SrcBlendAlpha[0] = Inv_Src_Alpha;
  }
};

RasterizerState myRS
{
      FillMode = Solid;
      CullMode = NONE;
      MultisampleEnable = true;
      DepthClipEnable = false;
};

DepthStencilState myDS
{
    DepthEnable = false;
    DepthWriteMask = Zero;
    DepthFunc = Less;
};
sampler mySS[2] : register(s3) 
{
    {
        Filter = ANISOTROPIC;
        MaxAnisotropy = 3;
    },
    {
        Filter = ANISOTROPIC;
        MaxAnisotropy = 4;
    }
};
  
  

効果の形式