函式自變數
函式接受一或多個輸入自變數;使用下列語法來宣告每個自變數。
[InputModifier] 類型名稱 [: Semantic] [InterpolationModifier] [= Initializers] |
[修飾詞]類型名稱 [: Semantic] [: 插補修飾詞] [= Initializer(s)]
如果有多個函式自變數,則會以逗號分隔。
參數
專案 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
InputModifier |
選擇性詞彙,將自變數識別為輸入、輸出或兩者。
參數一律會以值傳遞。 in 表示在函式開始之前,應該從呼叫的應用程式複製 參數的值。 out 表示應該複製參數的最後一個值,並在函式傳回時傳回呼叫的應用程式。 inout 是指定這兩者的速記。 統一值來自常數緩存器;每個頂點著色器或像素著色器調用都會看到相同的統一變數初始值。 全域變數會被視為宣告為統一。 對於非最上層函式,統一與 中的同義。 如果未指定參數使用方式,則會假設參數使用方式在 中。 |
||||||||||
類型 |
自變數類型;可以是任何有效的 HLSL 類型。 |
||||||||||
名稱 |
可唯一識別著色器函式名稱的 ASCII 字串。 |
||||||||||
語意 |
識別數據用途的選擇性字串(請參閱 Semantics (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)
{
...
}