Syntaxe de la fonction d’effet (Direct3D 10)
Une fonction d’effet est écrite en HLSL et est déclarée avec la syntaxe suivante.
Syntaxe
ReturnTypeFunctionName ( [ ArgumentList ] )
{
- \[ *Instructions* \]
};
Nom | Description |
---|---|
ReturnType | N’importe quel type HLSL |
FunctionName | Chaîne ASCII qui identifie de manière unique le nom de la fonction de nuanceur. |
ArgumentList | Un ou plusieurs arguments, séparés par des virgules (voir Arguments de fonction (DirectX HLSL)). |
Instructions | Une ou plusieurs instructions (voir Instructions (DirectX HLSL)) qui composent le corps de la fonction. Si une fonction est définie sans corps, elle est considérée comme un prototype ; et doivent être redéfinis avec un corps avant utilisation. |
Une fonction d’effet peut être un nuanceur ou simplement une fonction appelée par un nuanceur. Une fonction est identifiée de manière unique par son nom, les types de ses paramètres et la plateforme cible ; par conséquent, les fonctions peuvent être surchargées. Toute fonction HLSL valide doit correspondre à ce format ; Pour obtenir une liste plus détaillée de la syntaxe des fonctions HLSL, consultez Fonctions (DirectX HLSL).
Exemple
L’exemple BasicHLSL10 utilise à la fois un nuanceur de pixels et un nuanceur de vertex. La fonction de nuanceur de pixels est appelée RenderScenePS et est illustrée ci-dessous.
PS_OUTPUT RenderScenePS( VS_OUTPUT In,
uniform bool bTexture )
{
PS_OUTPUT Output;
// Lookup mesh texture and modulate it with diffuse
if( bTexture )
Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) *
In.Diffuse;
else
Output.RGBColor = In.Diffuse;
return Output;
}
Rubriques connexes