Types de données scalaires

HLSL prend en charge plusieurs types de données scalaires :

  • bool : true ou false.
  • int : entier signé 32 bits.
  • uint : entier non signé 32 bits.
  • dword : entier non signé 32 bits.
  • demi - valeur à virgule flottante 16 bits. Ce type de données est fourni uniquement pour la compatibilité linguistique. Les cibles de nuanceur Direct3D 10 mappent tous les demi-types de données aux types de données float. Un demi-type de données ne peut pas être utilisé sur une variable globale uniforme (si cette fonctionnalité est souhaitée, utilisez l’indicateur /Gec).
  • float : valeur à virgule flottante 32 bits.
  • double : valeur à virgule flottante 64 bits. Vous ne pouvez pas utiliser de valeurs de double précision comme entrées et sorties pour un flux. Pour passer des valeurs de double précision entre nuanceurs, déclarez chaque double en tant que paire de types de données uint . Ensuite, utilisez la fonction asuint pour empaqueter chaque double dans la paire d’uints et la fonction asdouble pour décompresser la paire d’uints dans le double.

À compter de Windows 8, HLSL prend également en charge les types de données scalaires de précision minimale. Les pilotes graphiques peuvent implémenter des types de données scalaires de précision minimale en utilisant toute précision supérieure ou égale à leur précision de bits spécifiée. Nous vous recommandons de ne pas compter sur un comportement de serrage ou d’enveloppement qui dépend d’une précision sous-jacente spécifique. Par exemple, le pilote graphique peut exécuter l’arithmétique sur une valeur min16float avec une précision complète de 32 bits.

  • min16float : valeur à virgule flottante minimale de 16 bits.
  • min10float : valeur à virgule flottante minimale de 10 bits.
  • min16int : entier signé 16 bits minimum.
  • min12int : entier signé 12 bits minimum.
  • min16uint : entier non signé de 16 bits minimum.

Pour plus d’informations sur les littéraux scalaires, consultez Grammaire.

Les scalaires suivants ont été introduits dans HLSL Shader Model 6.0 (dans Windows 10, version 1607) :

  • uint64_t : entier non signé 64 bits.
  • int64_t : entier signé 64 bits.

Les scalaires suivants ont été introduits dans HLSL Shader Model 6.2 (dans Windows 10, version 1803) et peuvent être utilisés si -enable-16bit-types est utilisé :

  • float16_t : toujours une valeur à virgule flottante 16 bits (par opposition aux autres floats 16 bits, qui peuvent ou non être 16 bits).
  • uint16_t : entier non signé 16 bits.
  • int16_t : entier signé 16 bits.

Pour plus d’informations sur les types 16 bits, consultez Types scalaires 16 bits. Ceux-ci nécessitent une prise en charge 16 bits dans le matériel, qui est pris en charge par Turing ou une version ultérieure.

Différences entre Direct3D 9 et Direct3D 10 :

Dans Direct3D 10, les types suivants sont des modificateurs du type float :

  • float snorm : float 32 bits signé et normalisé ieee dans la plage -1 à 1 inclus.
  • unorm float : float non signé-normalisé IEEE 32 bits dans la plage 0 à 1 inclus.

Par exemple, voici une déclaration de variable float normalisée signée à 4 composants.

snorm float4 fourComponentIEEEFloat;

Type string

HLSL prend également en charge un type de chaîne , qui est une chaîne ASCII. Il n’y a pas d’opérations ou d’états qui acceptent des chaînes ; mais les effets peuvent interroger les paramètres de chaîne et les annotations.

Exemple

// Top-level variable.
float globalShaderVariable; 

// Top-level function.
void function(
in float4 position: POSITION0 // Top-level argument.
              )
{
  float localShaderVariable; // Local variable.
  function2(...)
}

void function2()
{
  ...
}

Voir aussi