Partager via


Arguments de fonction

Une fonction prend un ou plusieurs arguments d’entrée ; utilisez la syntaxe suivante pour déclarer chaque argument.

[InputModifier] Type Name [: Semantic] [InterpolationModifier] [= Initialiseurs]

[Modificateur] Nom de type [: Sémantique] [: Modificateur d’interpolation] [= Initialiseur(s)]

S’il existe plusieurs arguments de fonction, ils sont séparés par des virgules.

Paramètres

Élément Description
InputModifier
Terme facultatif qui identifie un argument en tant qu’entrée, sortie ou les deux.
Valeur Description
in Entrée uniquement
Inout Entrée et sortie
out Sortie uniquement
Uniforme Entrer uniquement les données constantes

Les paramètres sont toujours transmis par valeur. in indique que la valeur du paramètre doit être copiée à partir de l’application appelante avant le début de la fonction. out indique que la dernière valeur du paramètre doit être copiée et retournée à l’application appelante lorsque la fonction retourne. inout est un raccourci pour spécifier les deux.

Une valeur uniforme provient d’un registre constant ; chaque appel de nuanceur de vertex ou de nuanceur de pixels affiche la même valeur initiale pour une variable uniforme. Les variables globales sont traitées comme si elles ont été déclarées uniformes. Pour les fonctions de niveau non supérieur, uniforme est synonyme de dans. Si aucune utilisation des paramètres n’est spécifiée, l’utilisation du paramètre est supposée être dans.

Type

Type d’argument ; peut être n’importe quel type HLSL valide.

Nom

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

Sémantique

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

InterpolationModifier

Modificateur d’interpolation facultatif qui permet à un nuanceur de déterminer la méthode d’interpolation. Un modificateur d’interpolation sur un argument de fonction s’applique uniquement à un argument utilisé comme entrée dans une fonction de nuanceur de pixels.

Initialiseurs

Valeurs facultatives pour l’initialisation ; plusieurs valeurs sont requises pour initialiser les types de données multicomposants.

Notes

Les arguments de fonction sont répertoriés dans une liste d’arguments séparés par des virgules dans une déclaration de fonction. Comme dans les fonctions C, chaque argument doit avoir un nom de paramètre et un type déclarés ; un argument d’une fonction HLSL peut éventuellement inclure une sémantique, une valeur initiale et une entrée de nuanceur de pixels peut inclure un type d’interpolation.

Le type d’un argument de fonction peut être une structure, qui peut inclure un modificateur d’interpolation par membre. Si l’argument de fonction a également un modificateur d’interpolation, le modificateur d’argument de fonction remplace les modificateurs d’interpolation déclarés dans le type.

Exemples

Cet exemple (de l’exemple BasicHLSL10) illustre des entrées uniformes et non uniformes pour une fonction de nuanceur de vertex.

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

Cet exemple (de l’exemple ContentStreaming) utilise une structure d’entrée pour passer des arguments à une fonction de nuanceur de pixels.

VSBasicIn input
struct VSBasicIn
{
  float4 Pos    : POSITION;
  float3 Norm   : NORMAL;
  float2 Tex    : TEXCOORD0;
};

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

Fonctions (DirectX HLSL)