함수 인수

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

[InputModifier ] 형식 [ 이름: Semantic ] [ InterpolationModifier ] [ = Initializers]

[한정자 ] 형식 [ 이름: 의미 ] [ 체계: 보간 한정자 ] [ = 이니셜라이저]

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

매개 변수

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

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

균일한 값은 상수 레지스터에서 제공됩니다. 각 꼭짓점 셰이더 또는 픽셀 셰이더 호출은 균일한 변수에 대해 동일한 초기 값을 표시합니다. 전역 변수는 균일하게 선언된 것처럼 처리됩니다. 최상위가 아닌 함수의 경우 uniform은 의 동의어입니다. 매개 변수 사용이 지정되지 않은 경우 매개 변수 사용법은 에 있는것으로 가정합니다.

형식

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

이름

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

의미 체계

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

InterpolationModifier

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

이니셜라이저

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

설명

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

함수 인수의 형식은 멤버별 보간 한정자를 포함할 수 있는 구조체일 수 있습니다. 함수 인수에도 보간 한정자가 있는 경우 함수 인수 한정자는 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)