共用方式為


callc (sm4 - asm)

有條件地呼叫標記的副程式,其中標籤 l# 會出現在程式中。

callc{_z|_nz} src0.select_component, l#
項目 描述
src0
[in]要測試條件的元件。
我#
[in]副程式標籤。

備註

遇到 重試 時,請在呼叫之後將執行傳回指令。

權杖格式包含著色器中對應標籤的位移,方便使用。

下列範例顯示呼叫指示。

                ...
                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

Restrictions

  • 副程式可以巢狀 32 深度。
  • 傳回位址堆疊會由實作透明地管理。
  • 如果傳回位址堆疊上已經有 32 個專案,而且發出呼叫,則會略過 呼叫
  • 沒有自動參數堆疊。 應用程式可以使用可編制索引的暫存暫存器陣列 (x#[]) 手動實作堆疊。 不過,副程式呼叫傳回位址不會顯示,而且與應用程式完成的任何手動堆疊管理都正交。
  • 不允許 l# 參數的索引編制。
  • src0所提供的 32 位暫存器會在位層級進行測試。 如果有任何位為非零, callc_nz 會執行呼叫。 如果所有位都是零, callc_z 會執行呼叫。
  • 不允許遞迴。

本指示適用于下列著色器階段:

頂點著色器 幾何著色器 像素著色器
x x x

最小著色器模型

下列著色器模型中支援此函式。

著色器模型 支援
著色器模型 5
著色器模型 4.1
著色器模型 4
著色器模型 3 (DirectX HLSL)
著色器模型 2 (DirectX HLSL)
著色器模型 1 (DirectX HLSL)

著色器模型 4 元件 (DirectX HLSL)