エフェクト変数の構文 (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
テクスチャーのサンプリングは、テクスチャー サンプラを使用して行われます。エフェクトでサンプラを設定する方法については、「サンプラ型」を参照してください。