次の方法で共有


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

シェーダー モデル 4 アセンブリ (DirectX HLSL)