다음을 통해 공유


callc(sm4 - asm)

프로그램에서 l# 레이블이 나타나는 위치로 표시된 서브루틴을 조건부로 호출합니다.

callc{_z|_nz} src0.select_component, l#
항목 설명
src0
[in] 조건을 테스트할 성분입니다.
l#
[in] 서브루틴의 레이블입니다.

설명

ret가 발생하면 이 호출 후 명령으로 실행을 반환합니다.

토큰 형식에는 편의상 셰이더에서 해당 레이블의 오프셋이 포함되어 있습니다.

다음 예에서는 호출 명령을 보여 줍니다.

                ...
                callc_z  r1.y, l3 // if all bits in r0.x are 0, call l3
                callc_nz r2.z, l3 // if any bit in r0.x is nonzero, call l3
                ...
                ret
                label l3
                    ...
                    retc_nz r0.x
                    ...
                ret

제한

  • 서브루틴은 32개의 깊이로 중첩될 수 있습니다.
  • 반환 주소 스택은 구현에 의해 투명하게 관리됩니다.
  • 반환 주소 스택에 이미 32개의 항목이 있고 호출이 발생하면 호출을 건너뜁니다.
  • 자동 매개 변수 스택이 없습니다. 애플리케이션은 인덱싱 가능한 임시 레지스터 배열(x#[])을 사용하여 수동으로 스택을 구현할 수 있습니다. 그러나 서브루틴 호출 반환 주소는 표시되지 않으며 애플리케이션에서 수행하는 수동 스택 관리와 직교합니다.
  • l# 매개 변수의 인덱싱은 허용되지 않습니다.
  • src0에서 제공하는 32비트 레지스터는 비트 수준에서 테스트됩니다. 0이 아닌 비트가 있으면 callc_nz가 호출을 수행합니다. 모든 비트가 0이면 callc_z가 호출을 수행합니다.
  • 재귀는 허용되지 않습니다.

이 명령은 다음 셰이더 단계에 적용됩니다.

꼭짓점 셰이더 기하 도형 셰이더 픽셀 셰이더
x x x

최소 셰이더 모델

이 함수는 다음 셰이더 모델에서 지원됩니다.

셰이더 모델 지원됨
셰이더 모델 5
셰이더 모델 4.1
셰이더 모델 4
셰이더 모델 3(DirectX HLSL) 아니요
셰이더 모델 2(DirectX HLSL) 아니요
셰이더 모델 1(DirectX HLSL) 아니요

셰이더 모델 4 어셈블리(DirectX HLSL)