다음을 통해 공유


효과 변수 구문(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;
    }
};
  
  

효과 형식