共用方式為


片段宣告語法 (Direct3D 9 HLSL)

每個 Microsoft 高階著色器語言 (HLSL) 函式都可以透過加入片段宣告來轉換為著色器片段。

語法

fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();

地點:

價值 描述
fragmentKeyword 必要關鍵詞。 pixelfragment 或 vertexfragment。
FragmentName 指定已編譯片段名稱的 ASCII 文字字串。
編譯片段 必要關鍵詞。
shaderProfile 用來進行編譯的著色器模型。 任何有效的頂點著色器配置檔(請參閱 D3DXGetVertexShaderProfile) 或像素著色器配置檔 (請參閱 D3DXGetPixelShaderProfile)。
FunctionName() 著色器函式名稱,後面接著括弧。

 

共用片段參數透過在其語意前加上「r_」前綴詞來標記。

void AmbientDiffuse( float3 vPosWorld: r_PosWorld,
                     float3 vNormalWorld: r_NormalWorld,
                     out float4 vColor: COLOR0 )
{  
    // Compute the light vector
    float3 vLight = normalize( g_vLightPosition - vPosWorld );
    
    // Compute the ambient and diffuse components of illumination
    vColor = g_vLightColor * g_vMaterialAmbient;
    vColor += g_vLightColor * g_vMaterialDiffuse * saturate( dot( vLight, vNormalWorld ) );
}
vertexfragment AmbientDiffuseFragment = compile_fragment vs_1_1 AmbientDiffuse();

在此範例中,r_PosWorld和r_NormalWorld語意會識別這兩個參數是其他片段之間的共用參數。

注意

片段連結器是 D3DX 9 中Microsoft Direct3D 9 技術。 片段連結器是工具(Flink.exe)、D3DX 9 API 和 HLSL 增強功能。 自 2009 年 8 月 DirectX SDK 版本起,片段連結器已卸除。 片段連結器永遠不會套用至 Microsoft Direct3D 10、Microsoft Direct3D 10.1 或 Microsoft Direct3D 11。

 

Shader Model 3 (DirectX HLSL)