次の方法で共有


callc (sm4 - asm)

プログラム内のラベル l# が表示される場所でマークされたサブルーチンを条件付きで呼び出します。

callc{_z|_nz} src0.select_component, l#
Item 説明
src0
[入力]条件をテストするコンポーネント。
L#
[入力]サブルーチンのラベル。

注釈

ret が検出されたら、この呼び出しの後に命令に実行を返します。

トークン形式には、便利な方法としてシェーダー内の対応するラベルのオフセットが含まれています。

次の例は、呼び出し命令を示しています。

                ...
                callc_z  r1.y, l3 // if all bits in r0.x are 0, call l3
                callc_nz r2.z, l3 // if any bit in r0.x is nonzero, call l3
                ...
                ret
                label l3
                    ...
                    retc_nz r0.x
                    ...
                ret

制限

  • サブルーチンは、深い 32 個の入れ子にすることができます。
  • リターン アドレス スタックは、 実装によって透過的に管理されます。
  • リターン アドレス スタックに既に 32 個のエントリがあり、 呼び出し が発行された場合、呼び出しはスキップされます。
  • 自動パラメーター スタックはありません。 アプリケーションでは、インデックス可能な一時レジスタ配列 (x#[]) を使用して、スタックを手動で実装できます。 ただし、サブルーチン呼び出しの戻りアドレスは表示されず、アプリケーションによって行われる手動スタック管理と直交しています。
  • l# パラメーターのインデックス作成は許可されていません。
  • src0 によって提供される 32 ビット レジスタは、ビット レベルでテストされます。 ビットが 0 以外の場合、 callc_nz は呼び出しを実行します。 すべてのビットが 0 の場合、 callc_z は呼び出しを実行します。
  • 再帰は許可されていません。

この命令は、次のシェーダー ステージに適用されます。

頂点シェーダー ジオメトリ シェーダー ピクセル シェーダー
x x x

最小シェーダー モデル

この関数は、次のシェーダー モデルでサポートされています。

シェーダー モデル サポートされています
シェーダー モデル 5 はい
シェーダー モデル 4.1 はい
シェーダー モデル 4 はい
シェーダー モデル 3 (DirectX HLSL) no
シェーダー モデル 2 (DirectX HLSL) no
シェーダー モデル 1 (DirectX HLSL) no

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