효과 변수 구문(Direct3D 11)
효과 변수는 이 섹션에 설명된 구문을 사용하여 선언됩니다.
Syntax
기본 구문:
DataTypeVariableName [ : SemanticName ] <Annotations> [ = InitialValue ];
전체 구문은 변수 구문(DirectX HLSL) 을 참조하세요.
속성 | Description |
---|---|
DataType | 모든 기본, 텍스처, 순서가 지정되지 않은 액세스 뷰, 셰이더 또는 상태 블록 유형입니다. |
VariableName | 효과 변수의 이름을 고유하게 식별하는 ASCII 문자열입니다. |
SemanticName | 변수를 사용하는 방법에 대한 추가 정보를 나타내는 ASCII 문자열입니다. 의미 체계는 미리 정의된 시스템 값 또는 사용자 지정 사용자 문자열일 수 있는 ASCII 문자열입니다. |
주석 | 효과 시스템에서 무시되는 하나 이상의 사용자 제공 정보(메타데이터)입니다. 구문은 주석 구문(Direct3D 11)을 참조하세요. |
InitialValue | 변수의 기본값입니다. |
모든 함수 외부에서 선언되는 효과 변수는 scope 전역으로 간주됩니다. 함수 내에서 선언된 변수는 해당 함수의 로컬 변수입니다.
예제
이 예제에서는 전역 효과 숫자 변수를 보여 줍니다.
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;
}
};
관련 항목