if (sm4 - asm)
論理 OR の結果に基づいて分岐します。
if{_z|_nz} src0.select_component |
---|
Item | 説明 |
---|---|
src0 |
[入力]条件をテストするコンポーネントを格納します。 |
解説
トークン形式には、便利な方法としてシェーダーの対応する endif 命令のオフセットが含まれています。
次の例は、この命令の使用方法を示しています。
if_z r0.x // if all bits in r0.x are zero
...
else // (optional)
...
endif
if_nz r1.x // if any bit in r0.x is nonzero
...
else // (optional)
...
endif
制限
- ソース オペランド (4 つのコンポーネント ベクトルの場合) は、1 つのコンポーネント セレクターを使用する必要があります。
- src0 によって提供される 32 ビット レジスタは、ビット レベルでテストされます。 ビットが 0 以外の場合、 if_z は true になります。 すべてのビットが 0 の場合、 if_nz は true になります。
- フロー制御ブロックは、サブルーチンごとに最大 64 個の深い (およびメイン) 入れ子にすることができます。 HLSL コンパイラでは、この制限を超えるサブルーチンは生成されません。 64 レベルを超える制御フロー命令の動作 (サブルーチンごと) は未定義です。
この命令は、次のシェーダー ステージに適用されます。
頂点シェーダー | ジオメトリ シェーダー | ピクセル シェーダー |
---|---|---|
x | x | x |
最小シェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポートされています |
---|---|
シェーダー モデル 5 | はい |
シェーダー モデル 4.1 | はい |
シェーダー モデル 4 | はい |
シェーダー モデル 3 (DirectX HLSL) | no |
シェーダー モデル 2 (DirectX HLSL) | no |
シェーダー モデル 1 (DirectX HLSL) | no |