switch (sm4 - asm)
セレクターの値に応じて、スイッチ本体内の別のステートメント ブロックに制御を転送します。
スイッチ src0.select_component |
---|
Item | 説明 |
---|---|
src0 |
[入力]switch ステートメントのセレクター。 |
注釈
switch/endswitch コンストラクトは C 言語のスイッチ コンストラクトとまったく同じように動作しますが、例外は次のとおりです。D3D11 ケース/の既定のステートメントでは、中断なしで次のケース/の既定値に分類されるステートメントには、コードを含めることはできません。 同じコード ブロックを共有して、複数の case ステートメント ( 既定値を含む) を順番に表示できます。
条件は、32 ビットレジスタ コンポーネントまたは即時数量である必要があります。 等価比較はビットごとの (整数) です。
D3D11 のシェーダー命令と同様に、ハードウェアは スイッチ コンストラクトを直接実装する場合と実装しない場合があります。
Switch ステートメントは入れ子にすることができます。 各 スイッチ ブロックは、 ケース ステートメントの数に関係なく、サブルーチンとメインごとに64のフロー制御入れ子深度制限に対して1レベルとしてカウントされます。 HLSL コンパイラでは、この制限を超えるサブルーチンは生成されません。 サブルーチンごとに 64 レベルを超える制御フロー命令の動作は未定義です。
次の例は、この命令の使用方法を示しています。
...
switch r0.x
default: // falling through
case 3
switch r1.x
case 4
...
break
case 5
...
break
endswitch
break
case 0
break
endswitch
この命令は、次のシェーダー ステージに適用されます。
頂点シェーダー | ジオメトリ シェーダー | ピクセル シェーダー |
---|---|---|
x | x | x |
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | はい |
シェーダー モデル 4 | はい |
シェーダー モデル 3 (DirectX HLSL) | X |
シェーダー モデル 2 (DirectX HLSL) | X |
シェーダー モデル 1 (DirectX HLSL) | X |