函式宣告語法

HLSL 函式會以下列語法宣告。

[StorageClass][clipplanes () ][precise]Return_Value Name ( [ArgumentList] ) [: Semantic] { [StatementBlock] };

 

參數

StorageClass

重新定義函式宣告的修飾詞。 內嵌 目前是唯一的修飾詞值。 修飾詞值必須 內嵌 ,因為它也是預設值。 因此,不論您是否指定 內嵌,HLSL 中的所有函式都會內嵌。 內嵌函式會在編譯每個函式呼叫的) 時,產生函式主體 (的複本。 這是為了減少呼叫函式的額外負荷。

Clipplanes

裁剪平面的選擇性清單,最多 6 個使用者指定的裁剪平面。 這是適用于功能層級9_x和更新版本的SV_ClipDistance替代機制。

名字

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

ArgumentList

選擇性引數清單,這是傳遞至函式的自 變數 逗號分隔清單。

語義

選擇性字串,可識別傳回資料的用途 ( (請參閱 DirectX HLSL) ) 語意。

StatementBlock

組成函式主體的選擇性 語句 。 未定義主體的函式稱為函式原型;在呼叫函式之前,必須先在其他地方定義原型函式的主體。

傳回值

傳回型別可以是下列其中一個 HLSL 類型

備註

此頁面的語法描述幾乎所有類型的 HLSL 函式,這包括頂點著色器、圖元著色器和協助程式函式。 雖然幾何著色器也會使用函式實作,但其語法稍微複雜一點,因此有一個定義幾何著色器函式宣告的個別頁面, (請參閱 Geometry-Shader 物件 (DirectX HLSL) ) 。

只要函式提供參數類型和/或參數順序的唯一組合,就可以多載函式。 HLSL 也會實作許多內建函 式或內建函式

您可以使用剪輯平面屬性來指定使用者特定的 裁剪平面 。 Windows 會將這些裁剪平面套用至繪製的所有基本類型。 剪輯平面屬性的運作方式類似SV_ClipDistance,但適用于所有硬體功能層級9_x和更新版本。 如需詳細資訊,請參閱 功能層級 9 硬體上的使用者裁剪平面

範例

此範例來自 BasicHLSL10.fx 的 BasicHLSL10 範例

struct VS_OUTPUT
{
    float4 Position   : SV_POSITION; 
    float4 Diffuse    : COLOR0;
    float2 TextureUV  : TEXCOORD0;
};

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

這個來自 AdvancedParticles.fx 的範例來自 AdvancedParticles 範例,說明使用傳回類型的語意。

//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{   
    return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}

函式 (DirectX HLSL)