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.
Rubriques connexes