System-Generated 값 사용
시스템 생성 값은 셰이더 작업의 특정 효율성을 허용하기 위해 IA 단계(사용자 제공 입력 의미 체계기반)에 의해 생성됩니다.
인스턴스 ID(VS에 표시됨), 꼭짓점 ID(VS에 표시됨) 또는 기본 ID(GS/PS에 표시됨)와 같은 데이터를 연결하면 후속 셰이더 단계에서 해당 단계에서 처리를 최적화하기 위해 이러한 시스템 값을 찾을 수 있습니다. 예를 들어 VS 단계에서는 셰이더에 대한 추가 꼭짓점별 데이터를 가져오거나 다른 작업을 수행하기 위해 인스턴스 ID를 찾을 수 있습니다. GS 및 PS 단계에서는 기본 ID를 사용하여 기본 데이터당 데이터를 동일한 방식으로 가져올 수 있습니다.
VertexID
꼭짓점 ID는 각 셰이더 단계에서 각 꼭짓점을 식별하는 데 사용됩니다. 기본값이 0인 32비트 부호 없는 정수입니다. 기본 형식이 IA 단계에서 처리될 때 꼭짓점에 할당됩니다. 꼭짓점 ID 의미 체계를 셰이더 입력 선언에 연결하여 꼭짓점별 ID를 생성하도록 IA 단계에 알릴 수 있습니다.
IA는 셰이더 단계에서 사용하기 위해 각 꼭짓점에 꼭짓점 ID를 추가합니다. 각 그리기 호출에 대해 꼭짓점 ID는 1씩 증가합니다. 인덱싱된 그리기 호출에서 개수는 다시 시작 값으로 다시 설정됩니다. ID3D11DeviceContext::DrawIndexed 및 ID3D11DeviceContext::DrawIndexedInstanced경우 꼭짓점 ID는 인덱스 값을 나타냅니다. 꼭짓점 ID가 오버플로가 발생하면 (2³²– 1을 초과할 경우) 0으로 다시 시작합니다.
모든 기본 형식의 경우, 꼭짓점에는 인접성과 관계없이 꼭짓점 ID가 연관되어 있습니다.
PrimitiveID
기본 ID는 각 셰이더 단계에서 각 기본 형식을 식별하는 데 사용됩니다. 기본값이 0인 32비트 부호 없는 정수입니다. 기본 형식이 IA 단계에서 처리될 때 기본 형식에 할당됩니다. 기본 ID를 생성하도록 IA 단계에 알리려면 셰이더 입력 선언에 primitive-id 의미 체계를 연결합니다.
IA 단계에서는 첫 번째 활성화되는 단계인 기하 도형 셰이더 또는 픽셀 셰이더 단계에서 사용하기 위해 각 프리미티브에 원시 ID를 추가합니다. 인덱싱된 각 그리기 호출에 대해 기본 ID는 1씩 증가되지만 기본 ID는 새 인스턴스가 시작될 때마다 0으로 다시 설정됩니다. 다른 모든 그리기 호출은 인스턴스 ID의 값을 변경하지 않습니다. 인스턴스 ID가 오버플로되는 경우(2개에서 1을 초과) 0으로 래핑됩니다.
픽셀 셰이더 단계에는 기본 ID에 대한 별도의 입력이 없습니다. 그러나 기본 ID를 지정하는 모든 픽셀 셰이더 입력은 상수 보간 모드를 사용합니다.
인접한 기본 형식에 대한 기본 ID를 자동으로 생성하는 것은 지원되지 않습니다. 인접한 삼각형 스트립과 같이 인접한 기본 형식의 경우 인접하지 않은 삼각형 스트립의 기본 형식 집합과 마찬가지로 내부 기본 형식(인접하지 않은 기본 형식)에 대해서만 기본 ID가 유지됩니다.
InstanceID
인스턴스 ID는 각 셰이더 단계에서 현재 처리 중인 기하 도형의 인스턴스를 식별하는 데 사용됩니다. 기본값이 0인 32비트 부호 없는 정수입니다.
꼭짓점 셰이더 입력 선언에 인스턴스 ID 의미 체계가 포함된 경우 IA 단계는 각 꼭짓점에 인스턴스 ID를 추가합니다. 인덱싱된 각 그리기 호출에 대해 인스턴스 ID가 1씩 증가합니다. 다른 모든 그리기 호출은 인스턴스 ID 값을 변경하지 않습니다. 인스턴스 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(꼭짓점, 기본 형식 및 인스턴스)를 생성합니다. 또한 각 인스턴스에 고유한 인스턴스 ID가 지정됩니다. 데이터는 삼각형 스트립의 각 인스턴스를 구분하는 스트립 컷으로 끝납니다.
관련 항목