fcall(sm5 - asm)
인터페이스 함수 호출입니다.
fcall fp#[arrayIndex][callSite] |
---|
항목 | 설명 |
---|---|
fp# |
[in] 함수 포인터입니다. |
arrayIndex |
[in] 선택적 항목으로, 함수 포인터 배열에 대한 오프셋을 지정합니다. fp#이 인덱싱 가능으로 선언되지 않은 경우 이 매개 변수는 리터럴 부호 없는 정수여야 합니다. 그렇지 않으면 arrayIndex는 리터럴 베이스 + 셰이더 레지스터로부터의 오프셋 형식일 수 있습니다. 예를 들어 fcall fp1[r1.w + 0][0] 입니다. |
callSite |
[in] 선택적 항목으로, 실행할 함수 본문 fb#을 선택하여 선택한 함수 테이블에 대한 문자 그대로의 부호 없는 정수 오프셋입니다. |
설명
fp#[arrayIndex][]는 fp#의 선언에 나열된 함수 테이블 선택 항목에서 셰이더 외부의 API에서 선택한 특정 함수 테이블로 확인됩니다.
fp# 및 arrayIndex의 # 합계는 함수 테이블을 선택합니다. 예를 들어, 인터페이스가 fp4[4][3](배열 크기 4)로 선언된 경우 다음 fcall은 동등합니다. fcall fp4[2][3] 및 fp5[1][3], 4+2 = 5+1이기 때문입니다.
제한
arrayIndex가 동적 인덱싱을 사용하는 경우 arrayIndex가 잠금 단계에서 실행될 수 있는 인접한 셰이더 호출에서 분기되는 경우 동작이 정의되지 않습니다. HLSL 컴파일러는 이 경우를 허용하지 않으려고 시도합니다.
인접한 호출은 잠금 단계 실행을 중단하지 않기 때문에 흐름 제어로 인해 비활성화될 수 있습니다.
fp# + arrayIndex가 범위를 벗어난 인덱스를 지정하면 동작이 정의되지 않습니다.
여기에 설명된 정의되지 않은 사례의 경우 디바이스 분실 가능성을 포함하여 현재 D3D 디바이스의 동작이 정의되지 않음을 의미합니다. 그러나 현재 D3D 디바이스 외부의 메모리는 코드로 액세스되거나 실행되지 않습니다.
이 명령은 다음 셰이더 단계에 적용됩니다.
꼭짓점 | Hull | 도메인 | 기하 도형 | 픽셀 | 컴퓨팅 |
---|---|---|---|---|---|
X | X | X | X | X | X |
최소 셰이더 모델
이 명령은 다음 셰이더 모델에서 지원됩니다.
셰이더 모델 | 지원됨 |
---|---|
셰이더 모델 5 | 예 |
셰이더 모델 4.1 | 아니요 |
셰이더 모델 4 | 아니요 |
셰이더 모델 3(DirectX HLSL) | 아니요 |
셰이더 모델 2(DirectX HLSL) | 아니요 |
셰이더 모델 1(DirectX HLSL) | 아니요 |