|  |  | 
Each HLSL function can be converted into a shader fragment with the addition of a fragment declaration.
fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();
where:
| fragmentKeyword | Required keyword. Either pixelfragment or vertexfragment. | 
| FragmentName | An ASCII text string that specifies the compiled fragment name. | 
| compile_fragment | Required keyword. | 
| shaderProfile | The shader model to compile against. Any valid vertex shader profile (see D3DXGetVertexShaderProfile) or pixel shader profile (see D3DXGetPixelShaderProfile). | 
| FunctionName() | The shader function name, followed by parentheses. | 
Shared fragment parameters are marked by adding an 'r_' prefix to their semantic. Here is an example of a vertex shader fragment declaration from the FragmentLinker Sample:
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();
    In this example, the r_PosWorld and r_NormalWorld semantics identify that these two parameters are shared parameters among other fragments.