Синтаксис объявления фрагмента (Direct3D 9 HLSL)
Каждую функцию HLSL (Microsoft High Level Shader Language) можно преобразовать в фрагмент шейдера с добавлением объявления фрагмента.
Синтаксис
fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();
где:
Значение | Описание |
---|---|
fragmentKeyword | Обязательный ключевое слово. Либо pixelfragment, либо vertexfragment. |
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 определяет, что эти два параметра являются общими для других фрагментов.
Примечание
Компоновщик фрагментов — это технология Microsoft Direct3D 9 в D3DX 9. Компоновщик фрагментов был инструментом (Flink.exe), API D3DX 9 и усовершенствованием HLSL. Компоновщик фрагментов был удален в выпуске пакета SDK Для DirectX за август 2009 г. Компоновщик фрагментов никогда не применялся к Microsoft Direct3D 10, Microsoft Direct3D 10.1 или Microsoft Direct3D 11.
Связанные темы