Share via


함수 인수

함수는 하나 이상의 입력 인수를 사용합니다. 다음 구문을 사용하여 각 인수를 선언합니다.

[InputModifier] Type Name [: Semantic] [InterpolationModifier] [= Initializers]

[Modifier] Type Name [: Semantic] [: Interpolation Modifier] [= Initializer]

함수 인수가 여러 개인 경우 쉼표로 구분됩니다.

매개 변수

항목 설명
InputModifier
인수를 입력, 출력 또는 둘 다로 식별하는 선택적 용어입니다.
Description
in 입력만 해당
inout 입출력
out 출력만 해당
uniform 상수 데이터만 입력

매개 변수는 항상 값으로 전달됩니다. in은 함수가 시작되기 전에 호출 애플리케이션에서 매개 변수 값을 복사해야 함을 나타냅니다. out은 매개 변수의 마지막 값이 복사되어 함수가 반환될 때 호출 애플리케이션에 반환되어야 함을 나타냅니다. inout은 두 가지를 모두 지정하는 줄임말입니다.

균일한 값은 상수 레지스터에서 가져옵니다. 각 꼭짓점 셰이더 또는 픽셀 셰이더 호출은 균일 변수에 대해 동일한 초기 값을 참조하세요. 전역 변수는 균일하게 선언된 것처럼 처리됩니다. 최상위 수준이 아닌 함수의 경우 uniform은 in과 동의어입니다. 매개 변수 사용이 지정되지 않은 경우 매개 변수 사용은 in인 것으로 간주됩니다.

Type

인수 형식입니다. 모든 유효한 HLSL 형식이 될 수 있습니다.

Name

셰이더 함수의 이름을 고유하게 식별하는 ASCII 문자열입니다.

Semantic

데이터의 의도된 용도를 식별하는 선택적 문자열입니다(의미 체계(DirectX HLSL) 참조).

InterpolationModifier

셰이더가 보간 방법을 결정할 수 있도록 하는 선택적 보간 한정자입니다. 함수 인수의 보간 한정자는 픽셀 셰이더 함수에 대한 입력으로 사용되는 인수에만 적용됩니다.

Initializers

초기화를 위한 선택적 값입니다. 다중 성분 데이터 형식을 초기화하려면 여러 값이 필요합니다.

설명

함수 인수는 함수 선언에서 쉼표로 구분된 인수 목록에 나열됩니다. C 함수에서와 같이 각 인수에는 매개 변수 이름과 선언된 형식이 있어야 합니다. HLSL 함수에 대한 인수는 선택적으로 의미 체계, 초기 값을 포함할 수 있으며 픽셀 셰이더 입력은 보간 형식을 포함할 수 있습니다.

함수 인수의 Type은 멤버별 보간 한정자를 포함할 수 있는 구조체일 수 있습니다. 함수 인수에 보간 한정자도 있는 경우 함수 인수 한정자는 Type 내에서 선언된 보간 한정자를 재정의합니다.

예제

이 예(BasicHLSL10 샘플)는 꼭짓점 셰이더 함수에 대한 균일 입력과 비균일 입력을 보여 줍니다.

VS_OUTPUT RenderSceneVS( 
  float4 vPos : POSITION,
  float3 vNormal : NORMAL,
  float2 vTexCoord0 : TEXCOORD,
  uniform int nNumLights,
  uniform bool bTexture,
  uniform bool bAnimate )
{
  ...
}

이 예(ContentStreaming 샘플)는 입력 구조체를 사용하여 픽셀 셰이더 함수에 인수를 전달합니다.

VSBasicIn input
struct VSBasicIn
{
  float4 Pos    : POSITION;
  float3 Norm   : NORMAL;
  float2 Tex    : TEXCOORD0;
};

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

함수(DirectX HLSL)