Types numériques RenderScript

Présentation

Scalaires:

RenderScript accepte les types numériques scalaires suivants:

8 bits 16 bits 32 bits 64 bits
Entier: car, int8_t court, int16_t int32_t long, long, int64_t
Entier non signé: uchar, uint8_t ushort, uint16_t uint, uint32_t ulong, uint64_t
Virgule flottante: mi-temps float double

Vecteurs:

RenderScript accepte les vecteurs de taille fixe de longueur 2, 3 et 4. Les vecteurs sont déclarés à l'aide du nom de type commun suivi du 2, du 3 ou du 4. Exemple : float4, int3, double2, ulong4.

Pour créer des littéraux vectoriels, utilisez le type de vecteur suivi des valeurs entre accolades (par exemple, (float3){1.0f, 2.0f, 3.0f}).

Il est possible d'accéder aux entrées d'un vecteur en utilisant différents styles de dénomination.

Pour accéder aux entrées uniques, ajoutez un point à la suite du nom de la variable et ajoutez les lignes suivantes:

  • Les lettres x, y, z et w,
  • Les lettres r, g, b et a
  • La lettre s ou S, suivie d'un index basé sur zéro.

Par exemple, avec int4 myVar;, les éléments suivants sont équivalents:
myVar.x == myVar.r == myVar.s0 == myVar.S0
myVar.y == myVar.g == myVar.s1 == myVar.S1
myVar.z == myVar.b == myVar.s2 == myVar.S2
myVar.w == myVar.a == myVar.s3 == myVar.S3

Il est possible d'accéder simultanément à plusieurs entrées d'un vecteur à l'aide d'un identifiant qui est la concaténation de plusieurs lettres ou index. La taille du vecteur résultant est égale au nombre d'entrées nommées.

Dans l'exemple ci-dessus, les deux entrées du milieu sont accessibles à l'aide de myVar.yz, myVar.gb, myVar.s12 et myVar.S12.

Les entrées ne doivent pas nécessairement être contiguës ni par ordre croissant. Les entrées peuvent même être répétées, tant que nous n'essayons pas de leur attribuer. Vous ne pouvez pas non plus mélanger les styles d'attribution de noms.

Voici quelques exemples de ce que vous pouvez faire ou non:
float4 v4;
float3 v3;
float2 v2;
v2 = v4.xx; // Valid
v3 = v4.zxw; // Valid
v3 = v4.bba; // Valid
v3 = v4.s032; // Valid
v3.s120 = v4.S233; // Valid
v4.yz = v3.rg; // Valid
v4.yzx = v3.rg; // Invalid: mismatched sizes
v4.yzz = v3; // Invalid: z appears twice in an assignment
v3 = v3.xas0; // Invalid: can't mix xyzw with rgba nor s0...
v3 = v4.s034; // Invalid: the digit can only be 0, 1, 2, or 3

Matrices et quaternions:

RenderScript accepte les matrices carrées de taille fixe de flottants de taille 2x2, 3x3 et 4x4. Les types sont nommés rs_matrix2x2, rs_matrix3x3 et rs_matrix4x4. Consultez la section Fonctions matricielles pour obtenir la liste des opérations.

Les quaternions sont également compatibles avec rs_quaternion. Consultez la page Fonctions de quantification pour obtenir la liste des opérations.

Résumé

Types
car2 Deux entiers signés de 8 bits
car3 Trois entiers signés de 8 bits
carac4 Quatre entiers signés de 8 bits
double2 Deux floats 64 bits
double3 Trois flottants 64 bits
double4 Quatre floats 64 bits
float2 Deux floats 32 bits
Flottant 3 Trois flottants 32 bits
Nombre décimal4 Quatre floats 32 bits
moitié Valeur à virgule flottante 16 bits
moitié2 Deux floats 16 bits
demi-3 Trois flottants 16 bits
moitié4 Quatre floats 16 bits
int16_t Entier signé de 16 bits
Int2 Deux entiers signés de 32 bits
Int3 Trois entiers signés de 32 bits
int32_t Entier signé de 32 bits
Int4 Quatre entiers signés de 32 bits
int64_t Entier signé de 64 bits
int8_t Entier signé de 8 bits
longue2 Deux entiers signés de 64 bits
long3 Trois entiers signés de 64 bits
long4 Quatre entiers signés de 64 bits
rs_matrix2x2 Matrice 2 x 2 de floats 32 bits
rs_matrix3x3 Matrice 3 x 3 de floats 32 bits
rs_matrix4x4 Matrice 4 x 4 de floats 32 bits
quaternion_rs Quaternion
courte2 Deux entiers signés de 16 bits
courte3 Trois entiers signés de 16 bits
courte4 Quatre entiers signés de 16 bits
taille_t Type de coupe non signé
taille_t Type de taille signée
uchar Entier non signé de 8 bits
uchar2 Deux entiers non signés de 8 bits
uchar3 Trois entiers non signés de 8 bits
uchar4 Quatre entiers non signés de 8 bits
uint Entier non signé de 32 bits
uint16_t. Entier non signé de 16 bits
uint2 Deux entiers non signés de 32 bits
uint3 Trois entiers non signés de 32 bits
uint32_t Entier non signé de 32 bits
uint4 Quatre entiers non signés de 32 bits
uint64_t Entier non signé de 64 bits
uint8_t Entier non signé de 8 bits
ulong Entier non signé de 64 bits
ulong2 Deux entiers non signés de 64 bits
ulong3 Trois entiers non signés de 64 bits
ulong4 Quatre entiers non signés de 64 bits
ushort Entier non signé de 16 bits
ushort2 Deux entiers non signés de 16 bits
ushort3 Trois entiers non signés de 16 bits
ushort4 Quatre entiers non signés de 16 bits

Types

char2 : deux entiers signés de 8 bits

Une définition de type de: char __attribute__((ext_vector_type(2)))

Vecteur à deux caractères. Ces deux caractères sont regroupés dans un seul champ de 16 bits avec un alignement de 16 bits.

char3 : trois entiers signés de 8 bits

Une définition de type de: char __attribute__((ext_vector_type(3)))

Vecteur de trois caractères. Ces trois caractères sont regroupés dans un seul champ de 32 bits avec un alignement de 32 bits.

char4 : quatre entiers signés de 8 bits

Une définition de type de: char __attribute__((ext_vector_type(4)))

Vecteur à quatre caractères. Ces quatre caractères sont regroupés dans un seul champ de 32 bits avec un alignement de 32 bits.

double2 : deux floats de 64 bits

Une définition de type de: double __attribute__((ext_vector_type(2)))

Vecteur de deux doubles. Ces deux champs doubles sont regroupés dans un seul champ de 128 bits avec un alignement de 128 bits.

double3 : trois floats de 64 bits

Une définition de type de: double __attribute__((ext_vector_type(3)))

Vecteur de trois doubles. Ces trois champs doubles sont regroupés dans un seul champ de 256 bits avec un alignement de 256 bits.

double4 : quatre flottants de 64 bits

Une définition de type de: double __attribute__((ext_vector_type(4)))

Vecteur de quatre doubles. Ces quatre champs doubles sont regroupés dans un seul champ de 256 bits avec un alignement de 256 bits.

float2 : deux floats de 32 bits

Une définition de type de: float __attribute__((ext_vector_type(2)))

Vecteur de deux nombres à virgule flottante. Ces deux valeurs flottantes sont regroupées dans un seul champ de 64 bits avec un alignement de 64 bits.

Vecteur de deux nombres à virgule flottante. Ces deux valeurs flottantes sont regroupées dans un seul champ de 64 bits avec un alignement de 64 bits.

float3 : trois floats 32 bits

Une définition de type de: float __attribute__((ext_vector_type(3)))

Vecteur de trois flottants. Ces trois nombres à virgule flottante sont regroupés dans un seul champ de 128 bits avec un alignement de 128 bits.

float4 : quatre floats 32 bits

Une définition de type de: float __attribute__((ext_vector_type(4)))

Vecteur à quatre nombres à virgule flottante. Ces quatre flottants sont regroupés dans un seul champ de 128 bits avec un alignement de 128 bits.

Demi : valeur à virgule flottante 16 bits

Définition de type __fp16 Attribut ajouté au niveau d'API 23.

Valeur à virgule flottante de 16 bits.

half2 : deux floats 16 bits

Définition de type: half __attribute__((ext_vector_type(2))) Attribut ajouté au niveau d'API 23.

Version vectorielle du type à demi-flottant. Fournit deux demi-champs dans un seul champ de 32 bits avec un alignement de 32 bits.

half3 : trois floats 16 bits

Définition de type: half __attribute__((ext_vector_type(3))) Attribut ajouté au niveau d'API 23.

Version vectorielle du type à demi-flottant. Fournit trois demi-champs dans un seul champ de 64 bits avec un alignement de 64 bits.

half4 : quatre flottants 16 bits

Définition de type: half __attribute__((ext_vector_type(4))) Attribut ajouté au niveau d'API 23.

Version vectorielle du type à demi-flottant. Fournit quatre demi-champs dans un seul champ de 64 bits avec un alignement de 64 bits.

int16_t : entier signé de 16 bits

Une définition de type: courte

Type d'entier signé de 16 bits.

int2 : deux entiers signés de 32 bits

Une définition de type de: int __attribute__((ext_vector_type(2)))

Vecteur de deux entiers. Ces deux entiers sont regroupés dans un seul champ de 64 bits avec un alignement de 64 bits.

int3 : trois entiers signés de 32 bits

Une définition de type de: int __attribute__((ext_vector_type(3)))

Vecteur de trois entiers. Ces trois entiers sont regroupés dans un seul champ de 128 bits avec un alignement de 128 bits.

int32_t : entier signé de 32 bits

Une définition de type: int

Type d'entier signé de 32 bits.

int4 : quatre entiers signés de 32 bits

Une définition de type de: int __attribute__((ext_vector_type(4)))

Vecteur de quatre ents. Ces deux quatre sont regroupés dans un seul champ de 128 bits avec un alignement de 128 bits.

int64_t : entier signé de 64 bits

Définition de type: long long Supprimé du niveau d'API 21 ou supérieur

Définition de type: long Attribut ajouté au niveau d'API 21.

Type d'entier signé de 64 bits.

int8_t : entier signé de 8 bits

Une définition de type: char

Type d'entier signé de 8 bits.

long2 : deux entiers signés de 64 bits

Une définition de type de: long __attribute__((ext_vector_type(2)))

Vecteur de deux "long". Ces deux longs sont regroupés dans un seul champ de 128 bits avec un alignement de 128 bits.

long3 : trois entiers signés de 64 bits

Une définition de type de: long __attribute__((ext_vector_type(3)))

Vecteur de trois "long". Ces trois longs sont regroupés dans un seul champ de 256 bits avec un alignement de 256 bits.

long4 : quatre entiers signés de 64 bits

Une définition de type de: long __attribute__((ext_vector_type(4)))

Vecteur de quatre "long". Ces quatre longs sont regroupés dans un seul champ de 256 bits avec un alignement de 256 bits.

rs_matrix2x2 : matrice 2x2 de floats 32 bits

Une structure comportant les champs suivants:     

float m[4]

Matrice carrée de flottants de 2 x 2 Les entrées sont stockées dans le tableau à l'emplacement [ligne*2 + col].

Consultez la page Fonctions matricielles.

rs_matrix3x3 : matrice 3 x 3 de flottants 32 bits

Une structure comportant les champs suivants:     

float m[9]

Matrice carrée de floats 3x3. Les entrées sont stockées dans le tableau à l'emplacement [ligne*3 + col].

Consultez la page Fonctions matricielles.

rs_matrix4x4 : matrice 4 x 4 de floats 32 bits

Une structure comportant les champs suivants:     

float m[16]

Matrice carrée de floats 4x4. Les entrées sont stockées dans le tableau à l'emplacement [ligne*4 + col].

Consultez la page Fonctions matricielles.

rs_quaternion : quaternion

Une définition de type: float4

Matrice carrée de floats 4x4 représentant un quaternion.

Consultez la page Fonctions quaternioniques.

short2 : deux entiers signés de 16 bits

Une définition de type de: court __attribute__((ext_vector_type(2)))

Vecteur de deux Shorts. Ces deux Shorts sont regroupés dans un seul champ de 32 bits avec un alignement de 32 bits.

short3 : trois entiers signés de 16 bits

Une définition de type de: court __attribute__((ext_vector_type(3)))

Vecteur de trois Shorts. Ces trois champs courts sont regroupés dans un seul champ de 64 bits avec un alignement de 64 bits.

short4 : quatre entiers signés de 16 bits

Une définition de type de: court __attribute__((ext_vector_type(4)))

Vecteur de quatre Shorts. Ces quatre champs courts sont regroupés dans un seul champ de 64 bits avec un alignement de 64 bits.

size_t : type de coupe non signé

Typedef de: uint64_t Lors de la compilation pour 64 bits.

Typedef de: uint32_t Lors de la compilation pour 32 bits.

Type de taille non signé. Le nombre de bits dépend des indicateurs de compilation.

ssize_t : type de taille signée

Typedef de type: int64_t Lors de la compilation sur 64 bits.

Une définition de type: int32_t Lors de la compilation pour 32 bits.

Type de taille signée. Le nombre de bits dépend des indicateurs de compilation.

uchar : entier non signé de 8 bits

Une définition de type: uint8_t

Type d'entier non signé de 8 bits.

uchar2 : deux entiers non signés de 8 bits

Une définition de type de: uchar __attribute__((ext_vector_type(2)))

Vecteur de deux uchars. Ces deux champs uchar sont regroupés dans un seul champ de 16 bits avec un alignement de 16 bits.

uchar3 : trois entiers non signés de 8 bits

Une définition de type de: uchar __attribute__((ext_vector_type(3)))

Vecteur de trois uchars. Ces trois champs uchar sont regroupés dans un seul champ de 32 bits avec un alignement de 32 bits.

uchar4 : quatre entiers non signés de 8 bits

Une définition de type de: uchar __attribute__((ext_vector_type(4)))

Vecteur de quatre uchars. Ces quatre champs uchar sont regroupés dans un seul champ de 32 bits avec un alignement de 32 bits.

uint : entier non signé de 32 bits

Une définition de type: uint32_t

Type d'entier non signé de 32 bits.

uint16_t : entier non signé de 16 bits

Une définition de type: unsigned short

Type d'entier non signé de 16 bits.

uint2 : deux entiers non signés de 32 bits

Une définition de type de: uint __attribute__((ext_vector_type(2)))

Vecteur de deux nuits. Ces deux valeurs uint sont regroupées dans un seul champ de 64 bits avec un alignement de 64 bits.

uint3 : trois entiers non signés de 32 bits

Une définition de type de: uint __attribute__((ext_vector_type(3)))

Vecteur de trois nuits. Ces trois valeurs uint sont regroupées dans un seul champ de 128 bits avec un alignement de 128 bits.

uint32_t : entier non signé de 32 bits

typedef of: unsigned int (inte non signé)

Type d'entier non signé de 32 bits.

uint4 : quatre entiers non signés de 32 bits

Une définition de type de: uint __attribute__((ext_vector_type(4)))

Vecteur de quatre nuits. Ces quatre valeurs uint sont regroupées dans un seul champ de 128 bits avec un alignement de 128 bits.

uint64_t : entier non signé de 64 bits

Définition de type: unsigned long long Supprimé du niveau d'API 21 ou supérieur

Définition de type: unsigned long Attribut ajouté au niveau d'API 21.

Type d'entier non signé de 64 bits.

uint8_t : entier non signé de 8 bits

typedef of: unsigned char

Type d'entier non signé de 8 bits.

ulong : entier non signé de 64 bits

Une définition de type: uint64_t

Type d'entier non signé de 64 bits.

ulong2 : deux entiers non signés de 64 bits

Une définition de type de: ulong __attribute__((ext_vector_type(2)))

Vecteur de deux ulongs. Ces deux valeurs ulong sont regroupées dans un seul champ de 128 bits avec un alignement de 128 bits.

ulong3 : trois entiers non signés de 64 bits

Une définition de type de: ulong __attribute__((ext_vector_type(3)))

Vecteur de trois ulongs. Ces trois champs Ulong sont regroupés dans un seul champ de 256 bits avec un alignement de 256 bits.

ulong4 : quatre entiers non signés de 64 bits

Une définition de type de: ulong __attribute__((ext_vector_type(4)))

Vecteur de quatre ulongs. Ces quatre champs universels sont regroupés dans un seul champ de 256 bits avec un alignement de 256 bits.

ushort : entier non signé de 16 bits

Une définition de type: uint16_t

Type d'entier non signé de 16 bits.

ushort2 : deux entiers non signés de 16 bits

Une définition de type de: ushort __attribute__((ext_vector_type(2)))

Vecteur de deux ushorts. Ces deux champs ushort sont regroupés dans un seul champ de 32 bits avec un alignement de 32 bits.

ushort3 : trois entiers non signés de 16 bits

Une définition de type de: ushort __attribute__((ext_vector_type(3)))

Vecteur de trois ushorts. Ces trois champs ushort sont regroupés dans un seul champ de 64 bits avec un alignement de 64 bits.

ushort4 : quatre entiers non signés de 16 bits

Une définition de type de: ushort __attribute__((ext_vector_type(4)))

Vecteur de quatre ushorts. Ces quatre champs ushort regroupés dans un seul champ de 64 bits avec un alignement de 64 bits.