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.