다음을 통해 공유


시스템 생성 값 사용

시스템 생성 값은 셰이더 작업의 특정 효율성을 허용하기 위해 IA(입력 어셈블러) 단계 (사용자가 제공한 입력 의미 체계 기반)에 의해 생성됩니다. 인스턴스 ID(꼭짓점 셰이더(VS) 단계에서 볼 수 있음), 꼭짓점 ID(VS에서 볼 수 있음), 또는 기본 ID(지오메트리 셰이더(GS) 단계/및 픽셀 셰이더(PS) 단계에서 볼 수 있음)와 같은 데이터를 첨부하면, 후속 셰이더 단계에서 이러한 시스템 값을 찾아 해당 단계에서 처리를 최적화할 수 있습니다.

예를 들어 VS 단계에서는 셰이더에 대한 추가 꼭짓점별 데이터를 가져오거나 다른 작업을 수행하기 위해 인스턴스 ID를 찾을 수 있습니다. GS 및 PS 단계에서는 기본 ID를 사용하여 기본 데이터당 데이터를 동일한 방식으로 가져올 수 있습니다.

버텍스ID

꼭짓점 ID는 각 셰이더 단계에서 각 꼭짓점을 식별하는 데 사용됩니다. 기본값이 0인 32비트 부호 없는 정수입니다. 프리미티브가 입력 어셈블러(IA) 단계에 의해 처리될 때 꼭짓점에 할당됩니다. 꼭짓점 ID 의미 체계를 셰이더 입력 선언에 연결하여 꼭짓점별 ID를 생성하도록 IA 단계에 알릴 수 있습니다.

IA는 셰이더 단계에서 사용할 각 꼭짓점에 꼭짓점 ID를 추가합니다. 각 그리기 호출마다 꼭짓점 ID가 1씩 증가합니다. 인덱싱된 드로우 콜에서 갯수는 시작 값으로 다시 초기화됩니다. 꼭짓점 ID가 2³²– 1을 초과하여 오버플로될 경우, 0으로 다시 시작됩니다.

모든 기본 형식의 경우 꼭짓점은 인접성에 관계없이 꼭짓점 ID와 연관되어 있습니다.

PrimitiveID

기본 ID는 각 셰이더 단계에서 각 기본 형식을 식별하는 데 사용됩니다. 기본값이 0인 32비트 부호 없는 정수입니다. 기본 형식이 IA(입력 어셈블러) 단계의해 처리될 때 기본 형식에 할당됩니다. 기본 ID를 생성하도록 IA 단계에 알리려면 셰이더 입력 선언에 기본 ID 의미 체계를 연결합니다.

IA 단계는 GS(기하 도형 셰이더) 단계 또는 VS(꼭짓점 셰이더) 스테이지(IA 단계 이후 활성 상태인 첫 번째 단계)에서 사용할 기본 ID를 각 기본 형식에 추가합니다. 인덱싱된 각 그리기 호출에 대해 기본 ID는 1씩 증가되지만 기본 ID는 새 인스턴스가 시작될 때마다 0으로 다시 설정됩니다. 다른 모든 그리기 호출은 인스턴스 ID의 값을 변경하지 않습니다. 인스턴스 ID가 오버플로(2³² - 1을 초과)되면 0으로 다시 시작됩니다.

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

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

인스턴스ID

인스턴스 ID는 각 셰이더 단계에서 현재 처리 중인 기하 도형의 인스턴스를 식별하는 데 사용됩니다. 기본값이 0인 32비트 부호 없는 정수입니다.

입력 어셈블러(IA) 단계는 꼭짓점 셰이더 입력 선언에 인스턴스 ID 의미 체계가 포함된 경우 각 꼭짓점에 인스턴스 ID를 추가합니다. 인덱싱된 각 그리기 호출에 대해 인스턴스 ID가 1씩 증가합니다. 다른 모든 렌더링 호출은 인스턴스 ID 값을 변경하지 않습니다. 인스턴스 ID가 오버플로되면(2³²-1을 초과) 0으로 다시 시작됩니다.

예제

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

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

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

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

꼭짓점 데이터 C,U D,U E,U F,U G,U H,U 아이, 유 J,U K,U L,U
정점ID 0 1 2 3 4 5 6 7 8 (여덟) 9
InstanceID 0 0 0 0 0 0 0 0 0 0

 

삼각형 스트립 인스턴스 U에는 다음과 같은 시스템 생성 값이 있는 3개의 삼각형 기본 형식이 있습니다.

값 1 값 2 값 3
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
정점ID 0 1 2 3 4 5 6 7 8 (여덟) 9
InstanceID 1 1 1 1 1 1 1 1 1 1

 

삼각형 스트립 인스턴스 V에는 다음과 같은 시스템 생성 값이 있는 3개의 삼각형 기본 형식이 있습니다.

값 1 값 2 값 3
PrimitiveID 0 1 2
InstanceID 1 1 1

 

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

IA(Input-Assembler) 단계