꼭짓점 셰이더 흐름 제어 지침에는 두 가지 특별한 제한이 있습니다. 중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 제한합니다. 또한 각 명령에는 셰이더가 지원할 수 있는 최대 명령 수에 적용되는 명령 슬롯 수가 있습니다.
메모
*_4_0_level_9_x HLSL 셰이더 프로필을 사용하는 경우 셰이더 모델 2.x 프로필을 암시적으로 사용하여 Direct3D 9 지원 하드웨어를 지원합니다. 셰이더 모델 2.x 프로필은 셰이더 모델 4.x 이상 프로필보다 더 제한된 흐름 제어 동작을 지원합니다.
vs_2_0 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표에서는 각 명령이 기존 깊이에서 추가하거나 빼는 깊이 수를 보여 줍니다.
| 명령 | 정적 중첩 | 동적 중첩 | loop/rep 중첩 | 중첩 호출 | 정적 흐름 수 |
|---|---|---|---|---|---|
| bool인 경우 - | 0 | 0 | 0 | 0 | 1 |
| if_comp - | n/a | n/a | n/a | n/a | n/a |
| 경우 - | n/a | n/a | n/a | n/a | n/a |
| 기타 - | 0 | 0 | 0 | 0 | 1( bool인 경우-만 해당) |
| endif - vs | -1 | 0 | 0 | 0 | 0 |
| 담당자 - 비교 | 0 | 0 | 1 | 0 | 1 |
| 엔드립 - | 0 | 0 | -1 | 0 | 0 |
| 루프 - | 0 | 0 | 1 | 0 | 1 |
| endloop - vs | 0 | 0 | -1 | 0 | 0 |
| 나누기 - 비교 | n/a | n/a | n/a | n/a | n/a |
| break_comp - | n/a | n/a | n/a | n/a | n/a |
| 중단 - | n/a | n/a | n/a | n/a | n/a |
| 호출 - | 0 | 0 | 0 | 1 | 1 |
| callnz bool - vs | 0 | 0 | 0 | 1 | 1 |
| callnz pred - vs | n/a | n/a | n/a | n/a | n/a |
| ret - vs | 0 | 0 | 0 | -1 | 0 |
| setp_comp - 비교 | n/a | n/a | n/a | n/a | n/a |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 유형에는 하나 이상의 중첩 제한이 있습니다.
| 명령 유형 | 최대 |
|---|---|
| 정적 중첩 | 정적 흐름 수에 의해서만 제한됩니다. |
| 동적 중첩 | n/a |
| loop/rep 중첩 | 1 |
| 중첩 호출 | 1 |
| 정적 흐름 수 | 16 |
vs_2_x 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표에서는 각 명령이 기존 깊이에서 추가하거나 빼는 깊이 수를 보여 줍니다.
| 명령 | 정적 중첩 | 동적 중첩 | loop/rep 중첩 | 중첩 호출 | 정적 흐름 수 |
|---|---|---|---|---|---|
| bool인 경우 - | 1 | 0 | 0 | 0 | 1 |
| if_comp - | 0 | 1 | 0 | 0 | 0 |
| 경우 - | 0 | 1 | 0 | 0 | 0 |
| 기타 - | 0 | 0 | 0 | 0 | 1( bool인 경우-만 해당) |
| endif - vs | -1(경우 bool - vs) | -1(경우 - vs 또는 if_comp - vs) | 0 | 0 | 0 |
| 담당자 - 비교 | 0 | 0 | 1 | 0 | 1 |
| 엔드립 - | 0 | 0 | -1 | 0 | 0 |
| 루프 - | 0 | 0 | 1 | 0 | 1 |
| endloop - vs | 0 | 0 | -1 | 0 | 0 |
| 나누기 - 비교 | 0 | 0 | 0 | 0 | 0 |
| break_comp - | 0 | 1, -1 | 0 | 0 | 0 |
| 중단 - | 0 | 0 | 0 | 0 | 0 |
| 호출 - | 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 - 비교 | 0 | 0 | 0 | 0 | 0 |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 유형에는 하나 이상의 중첩 제한이 있습니다.
| 명령 유형 | 최대 |
|---|---|
| 정적 중첩 | 정적 흐름 수에 의해서만 제한됩니다. |
| 동적 중첩 | 0 또는 24, D3DCAPS9 참조하세요. VS20Caps.DynamicFlowControlDepth |
| loop/rep 중첩 | 1~4, D3DCAPS9 참조하세요. VS20Caps.StaticFlowControlDepth |
| 중첩 호출 | 1~4, D3DCAPS9 참조하세요. VS20Caps.StaticFlowControlDepth(루프/rep 제한과 독립적) |
| 정적 흐름 수 | 16 |
vs_2_sw 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표에서는 각 명령이 기존 깊이에서 추가하거나 빼는 깊이 수를 보여 줍니다.
| 명령 | 정적 중첩 | 동적 중첩 | loop/rep 중첩 | 중첩 호출 | 정적 흐름 수 |
|---|---|---|---|---|---|
| bool인 경우 - | 1 | 0 | 0 | 0 | n/a |
| if_comp - | 0 | 1 | 0 | 0 | n/a |
| 경우 - | 0 | 1 | 0 | 0 | n/a |
| 기타 - | 0 | 0 | 0 | 0 | n/a |
| endif - vs | -1(경우 bool - vs) | -1(경우 - vs 또는 if_comp - vs) | 0 | 0 | n/a |
| 담당자 - 비교 | 0 | 0 | 1 | 0 | n/a |
| 엔드립 - | 0 | 0 | -1 | 0 | n/a |
| 루프 - | 0 | 0 | 1 | 0 | n/a |
| endloop - vs | 0 | 0 | -1 | 0 | n/a |
| 나누기 - 비교 | 0 | 0 | 0 | 0 | n/a |
| break_comp - | 0 | 1, -1 | 0 | 0 | n/a |
| 중단 - | 0 | 0 | 0 | 0 | n/a |
| 호출 - | 0 | 0 | 0 | 1 | n/a |
| callnz bool - vs | 0 | 0 | 0 | 1 | n/a |
| callnz pred - vs | 0 | 1 | 0 | 1 | n/a |
| ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | n/a |
| setp_comp - 비교 | 0 | 0 | 0 | 0 | n/a |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 유형에는 하나 이상의 중첩 제한이 있습니다.
| 명령 유형 | 최대 |
|---|---|
| 정적 중첩 | 24 |
| 동적 중첩 | 24 |
| loop/rep 중첩 | 4 |
| 중첩 호출 | 4 |
| 정적 흐름 수 | 제한 없음 |
vs_3_0 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표에서는 각 명령이 기존 깊이에서 추가하거나 빼는 깊이 수를 보여 줍니다.
| 명령 | 정적 중첩 | 동적 중첩 | loop/rep 중첩 | 중첩 호출 | 정적 흐름 수 |
|---|---|---|---|---|---|
| bool인 경우 - | 1 | 0 | 0 | 0 | n/a |
| if_comp - | 0 | 1 | 0 | 0 | n/a |
| 경우 - | 0 | 1 | 0 | 0 | n/a |
| 기타 - | 0 | 0 | 0 | 0 | n/a |
| endif - vs | -1(경우 bool - vs) | -1(경우 - vs 또는 if_comp - vs) | 0 | 0 | n/a |
| 담당자 - 비교 | 0 | 0 | 1 | 0 | n/a |
| 엔드립 - | 0 | 0 | -1 | 0 | n/a |
| 루프 - | 0 | 0 | 1 | 0 | n/a |
| endloop - vs | 0 | 0 | -1 | 0 | n/a |
| 나누기 - 비교 | 0 | 0 | 0 | 0 | n/a |
| break_comp - | 0 | 1, -1 | 0 | 0 | n/a |
| 중단 - | 0 | 0 | 0 | 0 | n/a |
| 호출 - | 0 | 0 | 0 | 1 | n/a |
| callnz bool - vs | 0 | 0 | 0 | 1 | n/a |
| callnz pred - vs | 0 | 1 | 0 | 1 | n/a |
| ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | n/a |
| setp_comp - 비교 | 0 | 0 | 0 | 0 | n/a |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 유형에는 하나 이상의 중첩 제한이 있습니다.
| 명령 유형 | 최대 |
|---|---|
| 정적 중첩 | 24 |
| 동적 중첩 | 24 |
| loop/rep 중첩 | 4 |
| 중첩 호출 | 4 |
| 정적 흐름 수 | 제한 없음 |
vs_3_sw 대한 명령당 깊이 수
각 명령은 하나 이상의 중첩 깊이 제한에 대해 계산됩니다. 이 표에서는 각 명령이 기존 깊이에서 추가하거나 빼는 깊이 수를 보여 줍니다.
| 명령 | 정적 중첩 | 동적 중첩 | loop/rep 중첩 | 중첩 호출 | 정적 흐름 수 |
|---|---|---|---|---|---|
| bool인 경우 - | 1 | 0 | 0 | 0 | n/a |
| if_comp - | 0 | 1 | 0 | 0 | n/a |
| 경우 - | 0 | 1 | 0 | 0 | n/a |
| 기타 - | 0 | 0 | 0 | 0 | n/a |
| endif - vs | -1(경우 bool - vs) | -1(경우 - vs 또는 if_comp - vs) | 0 | 0 | n/a |
| 담당자 - 비교 | 0 | 0 | 1 | 0 | n/a |
| 엔드립 - | 0 | 0 | -1 | 0 | n/a |
| 루프 - | 0 | 0 | 1 | 0 | n/a |
| endloop - vs | 0 | 0 | -1 | 0 | n/a |
| 나누기 - 비교 | 0 | 0 | 0 | 0 | n/a |
| break_comp - | 0 | 1, -1 | 0 | 0 | n/a |
| 중단 - | 0 | 0 | 0 | 0 | n/a |
| 호출 - | 0 | 0 | 0 | 1 | n/a |
| callnz bool - vs | 0 | 0 | 0 | 1 | n/a |
| callnz pred - vs | 0 | 1 | 0 | 1 | n/a |
| ret - vs | 0 | -1 (callnz pred - vs) | 0 | -1 | n/a |
| setp_comp - 비교 | 0 | 0 | 0 | 0 | n/a |
중첩 깊이
중첩 깊이는 서로 내부에서 호출할 수 있는 명령 수를 정의합니다. 각 명령 유형에는 하나 이상의 중첩 제한이 있습니다.
| 명령 유형 | 최대 |
|---|---|
| 정적 중첩 | 24 |
| 동적 중첩 | 24 |
| loop/rep 중첩 | 4 |
| 중첩 호출 | 4 |
| 정적 흐름 수 | 제한 없음 |
관련 항목