흐름 제어 중첩 제한
꼭짓점 셰이더 흐름 제어 명령에는 두 가지 특별한 제한 사항이 있습니다. 중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 제한합니다. 또한 각 명령에는 셰이더가 지원할 수 있는 최대 명령 수에 적용되는 명령 슬롯 수가 있습니다.
참고
*_4_0_level_9_x HLSL 셰이더 프로필을 사용하는 경우 셰이더 모델 2.x 프로필을 암시적으로 사용하여 Direct3D 9 가능 하드웨어를 지원합니다. 셰이더 모델 2.x 프로필은 셰이더 모델 4.x 이상 프로필보다 더 제한된 흐름 제어 동작을 지원합니다.
vs_2_0에 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표는 각 명령이 기존 깊이에서 더하거나 빼는 깊이 수를 보여 줍니다.
명령 | 정적 중첩 | 동적 중첩 | 루프/반복 중첩 | 호출 중첩 | 정적 흐름 수 |
---|---|---|---|---|---|
if bool - vs | 0 | 0 | 0 | 0 | 1 |
if_comp - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
if pred - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
else - vs | 0 | 0 | 0 | 0 | 1(if bool - vs only) |
endif - vs | -1 | 0 | 0 | 0 | 0 |
rep - vs | 0 | 0 | 1 | 0 | 1 |
endrep - vs | 0 | 0 | -1 | 0 | 0 |
loop - vs | 0 | 0 | 1 | 0 | 1 |
endloop - vs | 0 | 0 | -1 | 0 | 0 |
break - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
break_comp - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
breakp - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
call - vs | 0 | 0 | 0 | 1 | 1 |
callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
callnz pred - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
ret - vs | 0 | 0 | 0 | -1 | 0 |
setp_comp - vs | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 | 해당 없음 |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 형식에는 하나 이상의 중첩 제한이 있습니다.
명령 형식 | 최대 |
---|---|
정적 중첩 | 정적 흐름 수에 의해서만 제한됨 |
동적 중첩 | 해당 없음 |
루프/반복 중첩 | 1 |
호출 중첩 | 1 |
정적 흐름 수 | 16 |
vs_2_x에 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표는 각 명령이 기존 깊이에서 더하거나 빼는 깊이 수를 보여 줍니다.
명령 | 정적 중첩 | 동적 중첩 | 루프/반복 중첩 | 호출 중첩 | 정적 흐름 수 |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | 1 |
if_comp - vs | 0 | 1 | 0 | 0 | 0 |
if pred - vs | 0 | 1 | 0 | 0 | 0 |
else - vs | 0 | 0 | 0 | 0 | 1(if bool - vs only) |
endif - vs | -1(if bool - vs) | -1(if pred - vs or if_comp - vs) | 0 | 0 | 0 |
rep - vs | 0 | 0 | 1 | 0 | 1 |
endrep - vs | 0 | 0 | -1 | 0 | 0 |
loop - vs | 0 | 0 | 1 | 0 | 1 |
endloop - vs | 0 | 0 | -1 | 0 | 0 |
break - vs | 0 | 0 | 0 | 0 | 0 |
break_comp - vs | 0 | 1, -1 | 0 | 0 | 0 |
breakp - vs | 0 | 0 | 0 | 0 | 0 |
call - vs | 0 | 0 | 0 | 1 | 1 |
callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
callnz pred - vs | 0 | 1 | 0 | 1 | 0 |
ret - vs | 0 | -1(callnz pred - vs) | 0 | -1 | 0 |
setp_comp - vs | 0 | 0 | 0 | 0 | 0 |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 형식에는 하나 이상의 중첩 제한이 있습니다.
명령 형식 | 최대 |
---|---|
정적 중첩 | 정적 흐름 수에 의해서만 제한됨 |
동적 중첩 | 0 또는 24, D3DCAPS9.VS20Caps.DynamicFlowControlDepth 참조 |
루프/반복 중첩 | 1~4, D3DCAPS9.VS20Caps.StaticFlowControlDepth 참조 |
호출 중첩 | 1~4, D3DCAPS9.VS20Caps.StaticFlowControlDepth(loop/rep 제한과 무관) 참조 |
정적 흐름 수 | 16 |
vs_2_sw에 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표는 각 명령이 기존 깊이에서 더하거나 빼는 깊이 수를 보여 줍니다.
명령 | 정적 중첩 | 동적 중첩 | 루프/반복 중첩 | 호출 중첩 | 정적 흐름 수 |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | 해당 없음 |
if_comp - vs | 0 | 1 | 0 | 0 | 해당 없음 |
if pred - vs | 0 | 1 | 0 | 0 | 해당 없음 |
else - vs | 0 | 0 | 0 | 0 | 해당 없음 |
endif - vs | -1(if bool - vs) | -1(if pred - vs or if_comp - vs) | 0 | 0 | 해당 없음 |
rep - vs | 0 | 0 | 1 | 0 | 해당 없음 |
endrep - vs | 0 | 0 | -1 | 0 | 해당 없음 |
loop - vs | 0 | 0 | 1 | 0 | 해당 없음 |
endloop - vs | 0 | 0 | -1 | 0 | 해당 없음 |
break - vs | 0 | 0 | 0 | 0 | 해당 없음 |
break_comp - vs | 0 | 1, -1 | 0 | 0 | 해당 없음 |
breakp - vs | 0 | 0 | 0 | 0 | 해당 없음 |
call - vs | 0 | 0 | 0 | 1 | 해당 없음 |
callnz bool - vs | 0 | 0 | 0 | 1 | 해당 없음 |
callnz pred - vs | 0 | 1 | 0 | 1 | 해당 없음 |
ret - vs | 0 | -1(callnz pred - vs) | 0 | -1 | 해당 없음 |
setp_comp - vs | 0 | 0 | 0 | 0 | 해당 없음 |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 형식에는 하나 이상의 중첩 제한이 있습니다.
명령 형식 | 최대 |
---|---|
정적 중첩 | 24 |
동적 중첩 | 24 |
루프/반복 중첩 | 4 |
호출 중첩 | 4 |
정적 흐름 수 | 제한 없음 |
vs_3_0에 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표는 각 명령이 기존 깊이에서 더하거나 빼는 깊이 수를 보여 줍니다.
명령 | 정적 중첩 | 동적 중첩 | 루프/반복 중첩 | 호출 중첩 | 정적 흐름 수 |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | 해당 없음 |
if_comp - vs | 0 | 1 | 0 | 0 | 해당 없음 |
if pred - vs | 0 | 1 | 0 | 0 | 해당 없음 |
else - vs | 0 | 0 | 0 | 0 | 해당 없음 |
endif - vs | -1(if bool - vs) | -1(if pred - vs or if_comp - vs) | 0 | 0 | 해당 없음 |
rep - vs | 0 | 0 | 1 | 0 | 해당 없음 |
endrep - vs | 0 | 0 | -1 | 0 | 해당 없음 |
loop - vs | 0 | 0 | 1 | 0 | 해당 없음 |
endloop - vs | 0 | 0 | -1 | 0 | 해당 없음 |
break - vs | 0 | 0 | 0 | 0 | 해당 없음 |
break_comp - vs | 0 | 1, -1 | 0 | 0 | 해당 없음 |
breakp - vs | 0 | 0 | 0 | 0 | 해당 없음 |
call - vs | 0 | 0 | 0 | 1 | 해당 없음 |
callnz bool - vs | 0 | 0 | 0 | 1 | 해당 없음 |
callnz pred - vs | 0 | 1 | 0 | 1 | 해당 없음 |
ret - vs | 0 | -1(callnz pred - vs) | 0 | -1 | 해당 없음 |
setp_comp - vs | 0 | 0 | 0 | 0 | 해당 없음 |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 형식에는 하나 이상의 중첩 제한이 있습니다.
명령 형식 | 최대 |
---|---|
정적 중첩 | 24 |
동적 중첩 | 24 |
루프/반복 중첩 | 4 |
호출 중첩 | 4 |
정적 흐름 수 | 제한 없음 |
vs_3_sw에 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표는 각 명령이 기존 깊이에서 더하거나 빼는 깊이 수를 보여 줍니다.
명령 | 정적 중첩 | 동적 중첩 | 루프/반복 중첩 | 호출 중첩 | 정적 흐름 수 |
---|---|---|---|---|---|
if bool - vs | 1 | 0 | 0 | 0 | 해당 없음 |
if_comp - vs | 0 | 1 | 0 | 0 | 해당 없음 |
if pred - vs | 0 | 1 | 0 | 0 | 해당 없음 |
else - vs | 0 | 0 | 0 | 0 | 해당 없음 |
endif - vs | -1(if bool - vs) | -1(if pred - vs or if_comp - vs) | 0 | 0 | 해당 없음 |
rep - vs | 0 | 0 | 1 | 0 | 해당 없음 |
endrep - vs | 0 | 0 | -1 | 0 | 해당 없음 |
loop - vs | 0 | 0 | 1 | 0 | 해당 없음 |
endloop - vs | 0 | 0 | -1 | 0 | 해당 없음 |
break - vs | 0 | 0 | 0 | 0 | 해당 없음 |
break_comp - vs | 0 | 1, -1 | 0 | 0 | 해당 없음 |
breakp - vs | 0 | 0 | 0 | 0 | 해당 없음 |
call - vs | 0 | 0 | 0 | 1 | 해당 없음 |
callnz bool - vs | 0 | 0 | 0 | 1 | 해당 없음 |
callnz pred - vs | 0 | 1 | 0 | 1 | 해당 없음 |
ret - vs | 0 | -1(callnz pred - vs) | 0 | -1 | 해당 없음 |
setp_comp - vs | 0 | 0 | 0 | 0 | 해당 없음 |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 형식에는 하나 이상의 중첩 제한이 있습니다.
명령 형식 | 최대 |
---|---|
정적 중첩 | 24 |
동적 중첩 | 24 |
루프/반복 중첩 | 4 |
호출 중첩 | 4 |
정적 흐름 수 | 제한 없음 |
관련 항목