Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Effektvariable wird mit der in diesem Abschnitt beschriebenen Syntax deklariert.
Syntax
Grundlegende Syntax:
DataTypeVariableName [ : SemanticName ] <Anmerkungen> [ = InitialValue ];
Vollständige Syntax finden Sie unter Variable Syntax (DirectX HLSL).
Name | Beschreibung |
---|---|
DataType | Beliebige Standard-, Textur-, ungeordnete Zugriffsansichten, Shader- oder Zustandsblocktypen. |
VariableName | Eine ASCII-Zeichenfolge, die den Namen der Effektvariable eindeutig identifiziert. |
SemanticName | Eine ASCII-Zeichenfolge, die zusätzliche Informationen darüber angibt, wie eine Variable verwendet werden soll. Eine Semantik ist eine ASCII-Zeichenfolge, die entweder ein vordefinierter Systemwert oder eine benutzerdefinierte Zeichenfolge sein kann. |
Anmerkungen | Eine oder mehrere vom Benutzer bereitgestellte Informationen (Metadaten), die vom Effektsystem ignoriert werden. Informationen zur Syntax finden Sie unter Anmerkungssyntax (Direct3D 11). |
InitialValue | Der Standardwert der Variablen. |
Eine Effektvariable, die außerhalb aller Funktionen deklariert wird, gilt als global im Bereich; innerhalb einer Funktion deklarierte Variablen sind lokal für diese Funktion.
Beispiel
In diesem Beispiel werden numerische Variablen für globale Effekte veranschaulicht.
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
In diesem Beispiel werden Effektvariablen veranschaulicht, die für eine Shaderfunktion lokal sind.
VS_OUTPUT RenderSceneVS( ... )
{
float3 vNormalWorldSpace;
float4 vAnimatedPos;
// shader body
}
In diesem Beispiel werden Funktionsparameter mit Semantik veranschaulicht.
VS_OUTPUT RenderSceneVS( float4 vPos : SV_POSITION,
float3 vNormal : NORMAL,
float2 vTexCoord0 : TEXCOORD0,
uniform int nNumLights,
uniform bool bTexture,
uniform bool bAnimate )
{
...
}
In diesem Beispiel wird das Deklarieren einer globalen Texturvariable veranschaulicht.
Texture2D g_MeshTexture; // Color texture for mesh
Das Sampling einer Textur erfolgt mit einem Textur-Sampler. Informationen zum Einrichten eines Samplers in einem Effekt finden Sie im Samplertyp.
Dieses Beispiel veranschaulicht das Deklarieren globaler ungeordneter Zugriffsansichtsvariablen.
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;
}
};
Zugehörige Themen