次の方法で共有


エフェクト変数の構文 (Direct3D 10)

エフェクト変数は、次の構文を使用して宣言されます。

構文

DataType VariableName [ : SemanticName ] < Annotations >;   
名前 説明
データ型 任意の基本型またはテクスチャー型です。
VariableName エフェクト変数の名前を一意に識別する ASCII 文字列です。
SemanticName 変数の使用方法に関する追加情報を示す ASCII 文字列です。セマンティクスは、事前に定義されたシステム値またはカスタム ユーザー文字列のいずれかの ASCII 文字列です。
アノテーション エフェクト システムで無視される、1 つ以上のユーザー指定情報 (メタデータ) です。構文については、「注釈の構文 (Direct3D 10)」を参照してください。

すべての関数の外側で宣言されるエフェクト変数は、スコープ内でグローバルと見なされます。1 つの関数内で宣言される変数は、その関数に対してローカルです。

BasicHLSL10 サンプルでは、マテリアルのカラー、ライトのプロパティ、およびトランスフォーム行列のセマンティクスがないグローバル変数を使用します。

次の例では、グローバル エフェクト変数を示します。

 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 

テクスチャーのサンプリングは、テクスチャー サンプラを使用して行われます。エフェクトでサンプラを設定する方法については、「サンプラ型」を参照してください。