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] [= Initializers]

[Modificateur] Nom du 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

Article Description
InputModifier
Terme facultatif qui identifie un argument comme entrée, une sortie ou les deux.
Valeur Description
dans Entrée uniquement
inout Entrée et sortie
Sortie uniquement
uniforme Données constantes d’entrée uniquement

Les paramètres sont toujours passés par valeur. 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 nuanceur de vertex ou appel de nuanceur de pixels voit la même valeur initiale pour une variable uniforme. Les variables globales sont traitées comme si elles sont déclarées uniformes. Pour les fonctions non de niveau supérieur, l’uniforme est synonyme de dans. Si aucune utilisation de paramètre n’est spécifiée, l’utilisation des paramètres 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 (voir Semantics (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 à une fonction de nuanceur de pixels.

initialiseurs

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

Remarques

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 sample) illustre les entrées uniformes et non uniformes dans 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)