Синтаксис переменной эффекта (Direct3D 10)
Переменная эффекта объявляется с помощью следующего синтаксиса.
Синтаксис
DataTypeVariableName [ : SemanticName ] <Заметки>;
Имя | Описание |
---|---|
DataType | Любой базовый тип или тип текстуры . |
VariableName | Строка ASCII, однозначно идентифицирующая имя переменной эффекта. |
SemanticName | Строка ASCII, обозначающая дополнительные сведения об использовании переменной. Семантика — это строка ASCII, которая может быть предопределенной строкой system-value или пользовательской строкой. |
Заметки | Один или несколько фрагментов предоставленных пользователем сведений (метаданных), которые игнорируются системой эффектов. Синтаксис см. в разделе Синтаксис заметки (Direct3D 10). |
Переменная эффекта, объявленная вне всех функций, считается глобальной в область; переменные, объявленные в функции, являются локальными для этой функции.
Пример
В примере 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
Выборка текстуры выполняется с помощью выборки текстур. Сведения о настройке выборки в эффекте см. в разделе Тип выборки.
Связанные темы