dcl_input vGSInstanceID(sm5 - asm)
기하 도형 셰이더 인스턴싱을 사용하도록 설정합니다.
dcl_input vGSInstanceID, instanceCount |
---|
항목 | 설명 |
---|---|
vGSInstanceID |
[in] 인스턴스 ID입니다. |
instanceCount |
[in] 인스턴스 수입니다. |
설명
선언의 instanceCount 매개 변수는 도형 셰이더가 각 원시 입력에 대해 실행해야 하는 인스턴스 수를 지정합니다. instanceCount의 최댓값은 32입니다.
dcl_maxOutputVertexCount를 통해 출력용으로 선언된 최대 꼭짓점 수는 각 인스턴스에 개별적으로 적용됩니다.
dcl_maxOutputVertexCount를 통해 인스턴스당 최대 꼭짓점 수를 곱한 이 선언의 인스턴스 수는 <= 1024여야 합니다.
지정된 기하 도형 셰이더 인스턴스가 내보낼 수 있는 데이터의 양은 최대 1024 스칼라이며 입력용으로 선언된 모든 스칼라를 세고 선언된 출력 꼭짓점 수를 곱하여 유효성이 검사됩니다.
기하 도형 셰이더 인스턴싱을 사용하면 원시 입력당 내보낼 수 있는 총 데이터 양이 효과적으로 증가합니다. 단일 인스턴스에 대한 1024 스칼라는 단일 원시 입력에 대한 모든 기하 도형 셰이더 인스턴스에서 최대 1024*32 스칼라의 출력 데이터를 생성합니다. 그러나 인스턴스가 많을수록 각 인스턴스에서 내보낼 수 있는 꼭짓점 수가 줄어듭니다. 단일 인스턴스(인스턴스 없음)는 1024개의 꼭짓점을 내보낼 수 있습니다. *32개의 인스턴스를 선언하는 경우 각 인스턴스는 1024/32 = 32개의 꼭짓점만 출력할 수 있습니다.
기하 도형 셰이더 인스턴싱 선언은 프로그램에서 독립형 32비트 정수 입력 레지스터인 vGSInstanceID를 사용할 수 있도록 합니다. 각 기하 도형 셰이더 인스턴스는 vGSInstanceID [0,1,2...]에 포함된 값으로 식별됩니다.
vGSInstanceID는 도형 셰이더 입력 꼭짓점 배열의 일부가 아닙니다(예: 삼각형 입력 시 꼭짓점 3개). vGSInstanceID 레지스터는 vPrimitiveID처럼 자체적으로 존재합니다.
각 기하 도형 셰이더 인스턴스가 종료되면 출력 토폴로지에 암시적 절단이 있으므로 연속 인스턴스가 서로 의존하지 않습니다.
하드웨어가 각 도형 셰이더 인스턴스를 병렬로 실행할 수 있지만 마지막에 있는 모든 인스턴스의 출력은 인스턴스화된 모든 도형 셰이더 호출이 0에서 instanceCount-1까지 vGSInstanceID를 반복하는 루프에서 순차적으로 실행되는 것처럼 직렬화되며 각 인스턴스의 끝에 암시적 출력 토폴로지 컷이 있습니다.
이 명령은 다음 셰이더 단계에 적용됩니다.
꼭짓점 | Hull | 도메인 | 기하 도형 | 픽셀 | 컴퓨팅 |
---|---|---|---|---|---|
X |
최소 셰이더 모델
이 명령은 다음 셰이더 모델에서 지원됩니다.
셰이더 모델 | 지원 여부 |
---|---|
셰이더 모델 5 | 예 |
셰이더 모델 4.1 | 아니요 |
셰이더 모델 4 | 아니요 |
셰이더 모델 3(DirectX HLSL) | 아니요 |
셰이더 모델 2(DirectX HLSL) | 아니요 |
셰이더 모델 1(DirectX HLSL) | 아니요 |