구조체 형식

HLSL를 사용 하 여 구조체를 선언 하려면 다음 구문을 사용 합니다.

구조체 이름{ [ InterpolationModifier ] Type [ R x C ] MemberName; ... };

매개 변수

이름의

구조 이름을 고유 하 게 식별 하는 ASCII 문자열입니다.

[InterpolationModifier]

보간 유형을 지정 하는 선택적 한정자입니다. 자세한 내용은 설명을 참조하세요.

유형 [ R x C]

선택적 행 (R) x 열 (C) 배열 크기를 포함 하는 멤버 유형입니다. 구조체에는 요소가 하나 이상 포함 되어 있습니다. 둘 이상의 요소가 포함 된 경우 요소는 모두 동일한 형식입니다. 행과 열의 수는 1에서 4 까지의 부호 없는 정수입니다.

MemberName

멤버 이름을 고유 하 게 식별 하는 ASCII 문자열입니다.

설명

보간 한정자는 모든 구조체 멤버나 픽셀 셰이더 함수에 대 한 인수에 지정할 수 있습니다. 한정자가 두 위치에 모두 표시 되는 경우 외부 한정자 (픽셀 셰이더 인수 한정자)가 내부 한정자 (구조체 한정자)를 과도 하 게 규칙 합니다.

셰이더 또는 효과를 컴파일할 때 셰이더 컴파일러는 HLSL 패킹 규칙에 따라 구조 멤버를 압축 합니다.

셰이더 모델 4에 도입 된 보간 한정자

픽셀 셰이더 입력에 사용 되는 꼭 짓 점 셰이더 출력은 래스터화 중에 픽셀 별 값을 가져오기 위해 선형으로 보간됩니다. 보간 방법을 설정 하려면 셰이더 모델 4 이상에서 지원 되는 다음 값 중 하나를 사용 합니다. 이 한정자는 픽셀 셰이더 입력으로 사용 되지 않는 꼭 짓 점 셰이더 출력에서 무시 됩니다.

보간 한정자 Description
순차 셰이더 입력 간을 보간합니다. 보간 한정자가 지정 되지 않은 경우 에는 기본값 입니다.
중심 픽셀의 적용 된 영역 내에 있는 샘플 간을 보간합니다 (픽셀 중심의 끝점을 추정 해야 할 수 있음). 중심 샘플링을 통해 픽셀을 부분적으로 검사 하는 경우 (픽셀 센터가 포함 되지 않은 경우에도) 앤티엘리어싱을 향상 시킬 수 있습니다. 중심 한정자는 선형 또는 noperspective 한정자와 함께 사용 해야 합니다.
nointerpolation 보간 하지 않습니다.
noperspective 뷰 보간을 수행 하는 동안 관점을 수정 하지 마십시오. Noperspective 한정자를 중심 한정자와 함께 사용할 수 있습니다.
샘플이 셰이더 모델 4.1 이상에서 사용 가능 픽셀 가운데가 아닌 샘플 위치를 보간합니다. 이로 인해 픽셀 셰이더가 픽셀 단위가 아닌 샘플 당 실행 됩니다. 샘플 별 실행을 유발 하는 또 다른 방법은 현재 샘플을 나타내는 의미 체계 SV _ SampleIndex를 사용 하는 입력을 사용 하는 것입니다. 지정 된 샘플 (또는 입력 SV SampleIndex)의 입력만 _ 픽셀의 셰이더 호출 사이에 차이가 있지만 한정자를 지정 하지 않는 다른 입력 (예: 다른 입력에서 한정자를 혼합 하는 경우)은 여전히 픽셀 중심으로 보간합니다. 픽셀 셰이더 호출 및 깊이/스텐실 테스트는 픽셀의 모든 포괄 샘플에 대해 발생 합니다. 이를 supersampling 라고도 합니다. 반면, 다중 샘플링 이라고 하는 샘플 빈도 호출이 없으면 픽셀 셰이더는 포괄 되는 샘플 수에 관계 없이 픽셀당 한 번씩 호출 되 고, 깊이/스텐실 테스트는 샘플 빈도로 발생 합니다. 두 모드 모두 동일한 가장자리 앤티엘리어싱을 제공 합니다. 그러나 supersampling는 픽셀 셰이더를 더 자주 호출 하 여 더 나은 음영 품질을 제공 합니다.
1. Int/uint 형식을 사용할 때 유일 하 게 유효한 옵션은 **nointerpolation** 입니다.

보간 한정자는 구조체 멤버나 함수 인수또는 둘 다에 적용할 수 있습니다.

예제

다음은 몇 가지 예제 구조체 선언입니다.

struct struct1
{
  int    a;
}

이 선언에는 배열이 포함 됩니다.

struct struct2
{
  int    a;
  float  b;
  int4x4 iMatrix;
}

이 선언에는 보간 한정자가 포함 됩니다.

struct In
{
  centroid float2 Texcoord;
};

참고 항목

데이터 형식 (DirectX HLSL)