Partager via


Syntaxe de déclaration de fragment (Direct3D 9 HLSL)

Chaque fonction HLSL (High Level Shader Language) de Microsoft peut être convertie en fragment de nuanceur avec l’ajout d’une déclaration de fragment.

Syntaxe

fragmentKeyword FragmentName = compile_fragment shaderProfile FunctionName();

où :

Valeur Description
fragmentKeyword Mot clé obligatoire. Pixelfragment ou vertexfragment.
FragmentName Chaîne de texte ASCII qui spécifie le nom du fragment compilé.
compile_fragment Mot clé obligatoire.
shaderProfile Modèle de nuanceur sur lequel compiler. Tout profil de nuanceur de vertex valide (voir D3DXGetVertexShaderProfile) ou profil de nuanceur de pixels (voir D3DXGetPixelShaderProfile).
FunctionName() Nom de la fonction nuanceur, suivi de parenthèses.

 

Les paramètres de fragment partagé sont marqués en ajoutant un préfixe « r_ » à leur sémantique.

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();

Dans cet exemple, la sémantique r_PosWorld et r_NormalWorld identifient que ces deux paramètres sont des paramètres partagés entre d’autres fragments.

Notes

Fragment linker était une technologie Microsoft Direct3D 9 dans D3DX 9. L’éditeur de liens fragments était un outil (Flink.exe), une API D3DX 9 et une amélioration HLSL. L’éditeur de liens de fragments a été supprimé à partir de la version d’août 2009 du Kit de développement logiciel (SDK) DirectX. L’éditeur de liens fragments n’a jamais été appliqué à Microsoft Direct3D 10, Microsoft Direct3D 10.1 ou Microsoft Direct3D 11.

 

Nuanceur modèle 3 (DirectX HLSL)