Partager via


Syntaxe de déclaration de fonction

Les fonctions HLSL sont déclarées avec la syntaxe suivante.

[StorageClass] [clipplanes()] [précis] Return_Value Name ( [ArgumentList] ) [ : Semantic] { [StatementBlock] } ;

 

Paramètres

StorageClass

Modificateur qui redéfinit une déclaration de fonction. inline est actuellement la seule valeur modificateur. La valeur du modificateur doit être inline, car elle est également la valeur par défaut. Par conséquent, une fonction est inline, que vous spécifiiez inline, et toutes les fonctions dans HLSL soient inline. Une fonction inline génère une copie du corps de la fonction (lors de la compilation) pour chaque appel de fonction. Cela permet de réduire la surcharge liée à l’appel de la fonction.

clipplanes

Liste facultative des plans clip, qui est jusqu’à 6 plans clip spécifiés par l’utilisateur. Il s’agit d’un autre mécanisme pour SV_ClipDistance qui fonctionne sur niveau de fonctionnalité 9_x et supérieur.

Nom

Chaîne ASCII qui identifie de manière unique le nom de la fonction de nuanceur.

argumentList

Liste d’arguments facultative, qui est une liste séparée par des virgules d’arguments passée dans une fonction.

sémantique

Chaîne facultative qui identifie l’utilisation prévue des données de retour (voir Sémantique (DirectX HLSL)).

StatementBlock

Instructions facultatives qui composent le corps de la fonction. Une fonction définie sans corps est appelée prototype de fonction ; le corps d’une fonction prototype doit être défini ailleurs avant que la fonction puisse être appelée.

Valeur de retour

Le type de retour peut être l’un de ces types HLSL .

Remarques

La syntaxe de cette page décrit presque tous les types de fonction HLSL, notamment les nuanceurs de vertex, les nuanceurs de pixels et les fonctions d’assistance. Bien qu’un nuanceur de géométrie soit également implémenté avec une fonction, sa syntaxe est un peu plus compliquée, il existe donc une page distincte qui définit une déclaration de fonction de nuanceur geometry (voir Geometry-Shader Object (DirectX HLSL)).

Une fonction peut être surchargée tant qu’elle reçoit une combinaison unique de types de paramètres et/ou d’ordre de paramètre. HLSL implémente également un certain nombre de fonctions intrinsèques intégrées ou .

Vous pouvez spécifier des plans clip spécifiques à l’utilisateur avec l’attribut clipplans. Windows applique ces plans clip à toutes les primitives dessinées. Les clipplans fonctionnent comme SV_ClipDistance, mais fonctionnent sur tout le matériel niveau de fonctionnalité 9_x et supérieur. Pour plus d’informations, consultez plans de clip utilisateur sur le matériel de niveau 9 de fonctionnalité.

Exemples

Cet exemple provient de BasicHLSL10.fx de l’exemple BasicHLSL10.

struct VS_OUTPUT
{
    float4 Position   : SV_POSITION; 
    float4 Diffuse    : COLOR0;
    float2 TextureUV  : TEXCOORD0;
};

VS_OUTPUT RenderSceneVS( float4 vPos : POSITION,
                         float3 vNormal : NORMAL,
                         float2 vTexCoord0 : TEXCOORD,
                         uniform int nNumLights,
                         uniform bool bTexture,
                         uniform bool bAnimate )
{
    VS_OUTPUT Output;
    ...
    return Output;    
}

Cet exemple de AdvancedParticles.fx de l’exemple AdvancedParticlesillustre l’utilisation d’une sémantique pour le type de retour.

//
// PS for particles
//
float4 PSPointSprite(PSSceneIn input) : SV_Target
{   
    return g_txDiffuse.Sample( g_samLinear, input.tex ) * input.color;
}

fonctions (DirectX HLSL)