다음을 통해 공유


System-Generated 값 사용

시스템 생성 값은 셰이더 작업에서 특정 효율성을 허용하기 위해 IA 단계(사용자가 제공한 입력 의미 체계 기반)에 의해 생성됩니다.

instance ID(VS에 표시), 꼭짓점 ID(VS에 표시됨) 또는 기본 ID(GS/PS에 표시됨)와 같은 데이터를 연결하면 후속 셰이더 단계에서 해당 단계에서 처리를 최적화하기 위해 이러한 시스템 값을 찾을 수 있습니다. instance 경우 VS 스테이지는 셰이더에 대한 추가 꼭짓점별 데이터를 가져오거나 다른 작업을 수행하기 위해 instance ID를 찾을 수 있습니다. GS 및 PS 단계에서는 기본 ID를 사용하여 기본형별 데이터를 동일한 방식으로 잡을 수 있습니다.

VertexID

꼭짓점 ID는 각 셰이더 단계에서 각 꼭짓점을 식별하는 데 사용됩니다. 서명되지 않은 32비트 정수이며 기본값은 0입니다. 기본 형식이 IA 단계에서 처리될 때 꼭짓점에 할당됩니다. 꼭짓점 ID 의미 체계를 셰이더 입력 선언에 연결하여 IA 단계에 꼭짓점별 ID를 생성하도록 알릴 수 있습니다.

IA는 셰이더 단계에서 사용하기 위해 각 꼭짓점에 꼭짓점 ID를 추가합니다. 각 그리기 호출에 대해 꼭짓점 ID는 1씩 증가합니다. 인덱싱된 그리기 호출에서 개수는 시작 값으로 초기화됩니다. ID3D11DeviceContext::D rawIndexedID3D11DeviceContext::D rawIndexedInstanced의 경우 꼭짓점 ID는 인덱스 값을 나타냅니다. 꼭짓점 ID가 오버플로되면(2²– 1 초과) 0으로 래핑됩니다.

모든 기본 형식의 경우 꼭짓점은 인접성에 관계없이 꼭짓점 ID를 연결합니다.

PrimitiveID

기본 ID는 각 셰이더 단계에서 각 기본 형식을 식별하는 데 사용됩니다. 서명되지 않은 32비트 정수이며 기본값은 0입니다. 기본 형식이 IA 단계에서 처리될 때 기본 형식에 할당됩니다. 기본 ID를 생성하도록 IA 단계에 알리려면 셰이더 입력 선언에 primitive-id 의미 체계를 연결합니다.

IA 단계에서는 기하 도형 셰이더 또는 픽셀 셰이더 단계에서 사용하기 위해 각 기본 형식에 기본 ID를 추가합니다(IA 단계 이후 활성화된 첫 번째 단계 중). 인덱싱된 각 그리기 호출에 대해 기본 ID는 1씩 증가되지만 새 instance 시작될 때마다 기본 ID가 0으로 다시 설정됩니다. 다른 모든 그리기 호출은 instance ID의 값을 변경하지 않습니다. instance ID가 오버플로되면(2²– 1 초과) 0으로 래핑됩니다.

픽셀 셰이더 단계에는 기본 ID에 대한 별도의 입력이 없습니다. 그러나 기본 ID를 지정하는 모든 픽셀 셰이더 입력은 상수 보간 모드를 사용합니다.

인접한 기본 형식에 대한 기본 ID를 자동으로 생성하는 기능은 지원되지 않습니다. 인접한 삼각형 스트립과 같이 인접한 기본 형식의 경우 인접하지 않은 삼각형 스트립의 기본 형식 집합과 마찬가지로 내부 기본 형식(인접하지 않은 기본 형식)에 대해서만 기본 ID가 유지됩니다.

InstanceID

instance ID는 각 셰이더 단계에서 현재 처리 중인 기하 도형의 instance 식별하는 데 사용됩니다. 서명되지 않은 32비트 정수이며 기본값은 0입니다.

꼭짓점 셰이더 입력 선언에 instance ID 의미 체계가 포함된 경우 IA 단계는 각 꼭짓점에 instance ID를 추가합니다. 인덱싱된 각 그리기 호출에 대해 instance ID가 1씩 증가합니다. 다른 모든 그리기 호출은 instance ID의 값을 변경하지 않습니다. instance ID 오버플로(2²– 1 초과)가 발생하면 0으로 래핑됩니다.

예제

다음 그림에서는 시스템 값이 IA 단계에서 인스턴스화된 삼각형 스트립에 연결되는 방법을 보여 줍니다.

인스턴스화된 삼각형 스트립에 대한 시스템 값 그림

다음 표는 동일한 삼각형 스트립의 두 인스턴스에 대해 생성되는 시스템 값을 보여줍니다. 첫 번째 인스턴스(인스턴스 U)는 파란색으로 표시되고 두 번째 인스턴스(인스턴스 V)는 녹색으로 표시됩니다. 실선은 기본 형식의 꼭짓점을 연결하고 점선은 인접한 꼭짓점을 연결합니다.

다음 표는 인스턴스 U에 대해 시스템에서 생성하는 값을 보여줍니다.

꼭짓점 데이터 C,U D,U E,U F,U G,U H,U I,U J,U K,U L,U
VertexID 0 1 2 3 4 5 6 7 8 9
InstanceID 0 0 0 0 0 0 0 0 0 0

 

PrimitiveID 0 1 2
InstanceID 0 0 0

 

다음 표는 인스턴스 V에 대해 시스템에서 생성하는 값을 보여줍니다.

꼭짓점 데이터 C,V D,V E,V F,V G,V H,V I,V J,V K,V L,V
VertexID 0 1 2 3 4 5 6 7 8 9
InstanceID 1 1 1 1 1 1 1 1 1 1

 

PrimitiveID 0 1 2
InstanceID 1 1 1

 

입력 어셈블러는 ID(꼭짓점, 기본 형식 및 instance)를 생성합니다. 또한 각 instance 고유한 instance ID가 부여됩니다. 데이터는 삼각형 스트립의 각 instance 구분하는 스트립 컷으로 끝납니다.

입력 어셈블러 단계