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 |