다음을 통해 공유


시그니처

셰이더 서명은 셰이더 함수에 입력되거나 셰이더 함수에서 출력되는 매개 변수 목록입니다. Direct3D 10에서 인접한 단계들은 출력 셰이더(또는 파이프라인 단계)가 레지스터 배열의 특정 위치에 데이터를 쓰고 입력 셰이더가 동일한 위치에서 읽어야 하는 레지스터 배열을 효과적으로 공유합니다. API는 셰이더 서명을 사용하여 의미 체계 확인의 오버헤드 없이 셰이더 출력을 입력과 바인딩합니다.

Direct3D 10에서는 셰이더 입력 선언에서 입력 서명이 생성되고 셰이더 출력 선언에서 출력 서명이 생성됩니다. 입력 서명은 출력 서명이 입력 서명의 엄격한 하위 집합(인수 형식 및 순서 일치)일 때 출력 서명과 호환되는 것으로 간주됩니다. 이를 수행하는 가장 간단한 방법은 동일한 구조체 형식으로 해당 셰이더 입력 및 출력을 연결하는 것입니다.

호환되는 서명의 예는 다음과 같습니다.

// Vertex Shader Output Signature
Struct VSOut
{
  float4 Pos: SV_Position;
  float3 MyNormal: Normal;
  float2 MyTex : Texcoord0;
}

// Pixel Shader Input Signature
Struct PSInWorks
{
  float4 Pos: SV_Position;
  float3 MyNormal: Normal;
}

다음은 호환되지 않는 서명의 예입니다. 입력 서명의 매개 변수 순서가 출력 서명에서의 순서와 일치하지 않습니다.

// Vertex Shader Output Signature
Struct VSOut
{
  float4 Pos: SV_Position;
  float3 MyNormal: Normal;
  float2 MyTex : Texcoord0;
}

// Pixel Shader Input Signature
Struct PSInFails
{
  float3 MyNormal: Normal;
  float4 Pos: SV_Position;
}

PSInWorks는 VSOut의 호환되는 하위 집합입니다(처음 두 항목이 VSOut의 처음 두 항목과 형식 및 순서가 모두 일치). 그러나 순서가 VSOut과 일치하지 않으므로 PSInFails는 호환되지 않습니다.

함수