Direct3D 9 HLSL (片段宣告語法)
每個 Microsoft 高階著色器語言 (HLSL) 函式都可以透過新增片段宣告,轉換成著色器片段。
Syntax
fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();
其中:
值 | Description |
---|---|
fragmentKeyword | 必要關鍵字。 圖元重組或頂點。 |
FragmentName | 指定已編譯片段名稱的 ASCII 文字字串。 |
compile_fragment | 必要關鍵字。 |
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。
相關主題