共用方式為


函式引數

函式接受一或多個輸入引數;使用下列語法來宣告每個引數。

[InputModifier]類型名稱 [: Semantic] [InterpolationModifier] [= Initializers]

[修飾詞]類型名稱 [: Semantic] [: 插補修飾詞] [= 初始化運算式 (s) ]

如果有多個函式引數,則會以逗號分隔。

參數

項目 描述
InputModifier
選擇性詞彙,將引數識別為輸入、輸出或兩者。
Description
in 僅輸入
inout 輸入和輸出
out 僅輸出
均勻 僅輸入常數資料

參數一律會以傳值方式傳遞。 in 表示在函式開始之前,應該從呼叫的應用程式複製 參數的值。 out 表示應該複製參數的最後一個值,並在函式傳回時傳回給呼叫的應用程式。 inout 是用來指定這兩者的速記。

統一值來自常數暫存器;每個頂點著色器或圖元著色器調用都會看到統一變數的相同初始值。 全域變數會視為宣告統一。 對於非最上層函式,uniform 與 in同義。 如果未指定任何參數使用方式,則會假設參數使用 方式位於

類型

引數類型;可以是任何有效的 HLSL 類型

名字

可唯一識別著色器函式名稱的 ASCII 字串。

語義

識別資料使用方式的選擇性字串 (請參閱 DirectX HLSL () ) 語意。

InterpolationModifier

選擇性 插補修飾詞 ,可讓著色器判斷插補的方法。 函式引數上的插補修飾詞只適用于做為圖元著色器函式輸入的引數。

初始化運算式

初始化的選擇性值;初始化多重元件資料類型需要多個值。

備註

函式引數會列在函式宣告中的逗號分隔引數清單中。 如同 C 函式,每個引數都必須宣告參數名稱和類型;HLSL 函式的引數可以選擇性地包含語意、初始值,以及圖元著色器輸入可以包含插補類型。

函式引數的類型可以是 結構,其中可能包含個別成員插補修飾詞。 如果函式引數也有內插補點修飾詞,函式引數修飾詞會覆寫 Type 內所宣告的插補修飾詞。

範例

本範例 (來自 BasicHLSL10 範例) 說明頂點著色器函式的統一和非統一輸入。

VS_OUTPUT RenderSceneVS( 
  float4 vPos : POSITION,
  float3 vNormal : NORMAL,
  float2 vTexCoord0 : TEXCOORD,
  uniform int nNumLights,
  uniform bool bTexture,
  uniform bool bAnimate )
{
  ...
}

此範例 (來自 ContentStreaming 範例) 使用輸入結構將引數傳遞至圖元著色器函式。

VSBasicIn input
struct VSBasicIn
{
  float4 Pos    : POSITION;
  float3 Norm   : NORMAL;
  float2 Tex    : TEXCOORD0;
};

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

函式 (DirectX HLSL)