Jenis Numerik RenderScript

Ringkasan

Skalar:

RenderScript mendukung jenis numerik skalar berikut:

8 bit 16 bit 32 bit 64 bit
{i>Integer<i} (Bilangan bulat): karakter, int8_t singkat, int16_t int32_t long, long long, int64_t
Bilangan bulat tidak bertanda tangan: uchar, uint8_t ushort, uint16_t {i>uint<i}, uint32_t ulong, uint64_t
Floating point: paruh babak float ganda

Vektor:

RenderScript mendukung vektor ukuran tetap dengan panjang 2, 3, dan 4. Vektor dideklarasikan menggunakan nama tipe umum diikuti oleh 2, 3, atau 4. Misalnya float4, int3, double2, ulong4.

Untuk membuat literal vektor, gunakan jenis vektor diikuti dengan nilai yang diapit oleh tanda kurung kurawal, misalnya (float3){1.0f, 2.0f, 3.0f}.

Entri dari vektor dapat diakses menggunakan gaya penamaan yang berbeda.

Entri tunggal dapat diakses dengan mengikuti nama variabel dengan titik dan:

  • Huruf x, y, z, dan w,
  • Huruf r, g, b, dan a,
  • Huruf s atau S, diikuti dengan indeks berbasis nol.

Misalnya, dengan int4 myVar;, hal berikut setara:
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

Beberapa entri vektor dapat diakses sekaligus dengan menggunakan ID yang merupakan penyambungan dari beberapa huruf atau indeks. Vektor yang dihasilkan memiliki ukuran yang sama dengan jumlah entri yang dinamai.

Dengan contoh di atas, dua entri tengah dapat diakses menggunakan myVar.yz, myVar.gb, myVar.s12, dan myVar.S12.

Entri tidak harus berdekatan atau dalam urutan yang meningkat. Entri bahkan dapat diulang selama kita tidak mencoba menugaskannya. Anda juga tidak dapat mencampur gaya penamaan.

Berikut contoh hal yang dapat atau tidak dapat dilakukan:
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

Matriks dan Kuaternion:

RenderScript mendukung matriks persegi ukuran tetap float dengan ukuran 2x2, 3x3, dan 4x4. Jenisnya bernama rs_matrix2x2, rs_matrix3x3, dan rs_matrix4x4. Lihat Fungsi Matriks untuk daftar operasi.

Kuaternion juga didukung melalui rs_quaternion. Lihat Fungsi Kuaterion untuk daftar operasi.

Ringkasan

Jenis
karakter2 Dua bilangan bulat bertanda 8 bit
karakter3 Tiga bilangan bulat bertanda 8 bit
karakter4 Empat bilangan bulat dengan tanda tangan 8 bit
double2 Dua float 64 bit
double3 Tiga float 64 bit
double4 Empat float 64 bit
float2 Dua float 32 bit
float3 Tiga float 32 bit
float4 Empat float 32 bit
setengah Nilai floating point 16 bit
setengah2 Dua float 16 bit
setengah3 Tiga float 16 bit
setengah 4 Empat float 16 bit
int16_t Bilangan bulat 16 bit dengan tanda tangan
int2 Dua bilangan bulat bertanda 32 bit
int3 Tiga bilangan bulat bertanda 32 bit
int32_t Bilangan bulat dengan tanda tangan 32 bit
int4 Empat bilangan bulat bertanda 32 bit
int64_t Bilangan bulat dengan tanda tangan 64 bit
int8_t Bilangan bulat dengan tanda tangan 8 bit
panjang2 Dua bilangan bulat bertanda 64 bit
panjang3 Tiga bilangan bulat bertanda 64 bit
panjang4 Empat bilangan bulat bertanda 64 bit
rs_matrix2x2 Matriks 2x2 dari float 32 bit
rs_matrix3x3 Matriks 3x3 dari float 32 bit
rs_matrix4x4 Matriks 4x4 dari float 32 bit
rs_quaternion Kuaternion
pendek2 Dua bilangan bulat bertanda 16 bit
singkat3 Tiga bilangan bulat bertanda 16 bit
short4 Empat bilangan bulat 16 bit bertanda tangan
size_t [t_ukuran] Jenis ukuran yang tidak ditandatangani
ssize_t [t_ukuran] Jenis ukuran yang ditandatangani
uchar Bilangan bulat tanpa tanda tangan 8 bit
uchar2 Dua bilangan bulat tanpa tanda tangan 8 bit
uchar3 Tiga bilangan bulat tanpa tanda tangan 8 bit
uchar4 Empat bilangan bulat tanpa tanda tangan 8 bit
uint Bilangan bulat tanpa tanda tangan 32 bit
uint16_t Bilangan bulat tanpa tanda tangan 16 bit
uint2 Dua bilangan bulat tanpa tanda tangan 32 bit
uint3 Tiga bilangan bulat tanpa tanda tangan 32 bit
uint32_t Bilangan bulat tanpa tanda tangan 32 bit
uint4 Empat bilangan bulat tanpa tanda tangan 32 bit
uint64_t Bilangan bulat tanpa tanda tangan 64 bit
uint8_t Bilangan bulat tanpa tanda tangan 8 bit
ulong Bilangan bulat tanpa tanda tangan 64 bit
ulong2 Dua bilangan bulat tanpa tanda tangan 64 bit
ulong3 Tiga bilangan bulat tanpa tanda tangan 64 bit
ulong4 Empat bilangan bulat tanpa tanda tangan 64 bit
singkat Bilangan bulat tanpa tanda tangan 16 bit
ushort2 Dua bilangan bulat tanpa tanda tangan 16 bit
ushort3 Tiga bilangan bulat tanpa tanda tangan 16 bit
ushort4 Empat bilangan bulat tanpa tanda tangan 16 bit

Jenis

char2 : Dua bilangan bulat dengan tanda tangan 8 bit

Typedef dari: char __attribute__((ext_vector_type(2)))

Vektor dua karakter. Kedua karakter ini dikemas ke dalam satu kolom 16 bit dengan penyelarasan 16 bit.

char3 : Tiga bilangan bulat dengan tanda tangan 8 bit

Typedef dari: char __attribute__((ext_vector_type(3)))

Vektor tiga karakter. Ketiga karakter ini dikemas ke dalam satu kolom 32 bit dengan penyelarasan 32 bit.

char4 : Empat bilangan bulat dengan tanda tangan 8 bit

Typedef dari: char __attribute__((ext_vector_type(4)))

Vektor empat karakter. Keempat karakter ini dikemas ke dalam satu kolom 32 bit dengan penyelarasan 32 bit.

double2 : Dua float 64 bit

typedef dari: __attribute__ ganda ((ext_vector_type(2)))

Vektor dua double. Dua kolom ganda ini dikemas ke dalam satu kolom 128 bit dengan perataan 128 bit.

double3 : Tiga float 64 bit

Typedef dari: __attribute__ ganda ((ext_vector_type(3)))

Vektor tiga double. Tiga kolom ganda ini dikemas ke dalam satu kolom 256 bit dengan perataan 256 bit.

double4 : Empat float 64 bit

Typedef dari: __attribute__ ganda ((ext_vector_type(4)))

Vektor empat double. Keempat kolom ganda ini dikemas ke dalam satu kolom 256 bit dengan penyelarasan 256 bit.

float2 : Dua float 32 bit

typedef dari: float __attribute__((ext_vector_type(2)))

Vektor dua float. Kedua {i>float<i} ini dikemas ke dalam satu bidang 64 bit dengan penyelarasan 64 bit.

Vektor dua float. Kedua {i>float<i} ini dikemas ke dalam satu bidang 64 bit dengan penyelarasan 64 bit.

float3 : Tiga float 32 bit

typedef dari: float __attribute__((ext_vector_type(3)))

Vektor tiga float. Ketiga float ini dikemas ke dalam satu kolom 128 bit dengan perataan 128 bit.

float4 : Empat float 32 bit

typedef dari: float __attribute__((ext_vector_type(4)))

Vektor empat jenis float. Keempat float ini dikemas ke dalam satu kolom 128 bit dengan penyelarasan 128 bit.

half : Nilai floating point 16 bit

Jenis: __fp16 Ditambahkan di API level 23

Nilai floating point 16 bit.

half2 : Dua float 16 bit

Typedef dari: setengah __attribute__((ext_vector_type(2))) Ditambahkan di API level 23

Versi vektor dari jenis half float. Menyediakan dua kolom setengah yang dikemas ke dalam satu kolom 32 bit dengan penyelarasan 32 bit.

half3 : Tiga float 16 bit

Typedef dari: setengah __attribute__((ext_vector_type(3))) Ditambahkan di API level 23

Versi vektor dari jenis half float. Menyediakan tiga kolom setengah yang dikemas ke dalam satu kolom 64 bit dengan penyelarasan 64 bit.

half4 : Empat float 16 bit

Typedef dari: setengah __attribute__((ext_vector_type(4))) Ditambahkan di API level 23

Versi vektor dari jenis half float. Menyediakan empat kolom setengah yang dikemas ke dalam satu kolom 64 bit dengan penyelarasan 64 bit.

int16_t : Bilangan bulat 16 bit dengan tanda tangan

Jenis: singkat

Jenis integer dengan tanda tangan 16 bit.

int2 : Dua bilangan bulat dengan tanda tangan 32 bit

Typedef dari: int __attribute__((ext_vector_type(2)))

Vektor dua int. Kedua int ini dikemas ke dalam satu bidang 64 bit dengan keselarasan 64 bit.

int3 : Tiga bilangan bulat dengan tanda tangan 32 bit

Typedef dari: int __attribute__((ext_vector_type(3)))

Vektor tiga int. Ketiga int ini dikemas ke dalam satu bidang 128 bit dengan penyelarasan 128 bit.

int32_t : Bilangan bulat 32 bit dengan tanda tangan

Jenis defisit: int

Tipe integer dengan tanda tangan 32 bit.

int4 : Empat bilangan bulat dengan tanda tangan 32 bit

Typedef dari: int __attribute__((ext_vector_type(4)))

Vektor empat int. Kedua empat ini dikemas ke dalam satu bidang 128 bit dengan penyelarasan 128 bit.

int64_t : Bilangan bulat 64 bit dengan tanda tangan

Jenis: panjang panjang Dihapus dari API level 21 dan yang lebih tinggi

Jenis: long Ditambahkan di API level 21

Tipe integer dengan tanda tangan 64 bit.

int8_t : Bilangan bulat 8 bit dengan tanda tangan

Typedef dari: char

Jenis integer dengan tanda tangan 8 bit.

long2 : Dua bilangan bulat dengan tanda tangan 64 bit

Typedef dari: __attribute__ panjang ((ext_vector_type(2)))

Vektor dua nilai long. Kedua nilai panjang ini dikemas ke dalam satu kolom 128 bit dengan penyelarasan 128 bit.

long3 : Tiga bilangan bulat dengan tanda tangan 64 bit

Typedef dari: __attribute__ panjang ((ext_vector_type(3)))

Vektor tiga nilai long. Ketiga nilai panjang ini dikemas ke dalam satu kolom 256 bit dengan penyelarasan 256 bit.

long4 : Empat bilangan bulat dengan tanda tangan 64 bit

Typedef dari: __attribute__ panjang ((ext_vector_type(4)))

Vektor empat nilai panjang. Keempat nilai panjang ini dikemas ke dalam satu kolom 256 bit dengan penyelarasan 256 bit.

rs_matrix2x2 : Matriks 2x2 dari float 32 bit

Struktur dengan kolom berikut:     

pelampung m[4]

Matriks 2x2 persegi dari float. Entri disimpan dalam array di lokasi [row*2 + col].

Lihat Fungsi Matriks.

rs_matrix3x3 : Matriks 3x3 dari float 32 bit

Struktur dengan kolom berikut:     

float m[9]

Matriks float 3x3 persegi. Entri disimpan dalam array di lokasi [row*3 + col].

Lihat Fungsi Matriks.

rs_matrix4x4 : Matriks 4x4 dari float 32 bit

Struktur dengan kolom berikut:     

float m[16]

Matriks float 4x4 persegi. Entri disimpan dalam array di lokasi [row*4 + col].

Lihat Fungsi Matriks.

rs_quaternion : Kuaternion

Typedef dari: float4

Matriks persegi 4x4 berisi float yang merepresentasikan angka empat.

Lihat Fungsi Kuaternion.

short2 : Dua bilangan bulat dengan tanda tangan 16 bit

Typedef dari: __attribute__ singkat ((ext_vector_type(2)))

Vektor dua celana pendek. Kedua Shorts ini dikemas ke dalam satu kolom 32 bit dengan perataan 32 bit.

short3 : Tiga bilangan bulat dengan tanda tangan 16 bit

Typedef dari: __attribute__ singkat ((ext_vector_type(3)))

Vektor tiga Shorts. Tiga isian pendek ini dikemas ke dalam satu ruang isian 64 bit dengan penyelarasan 64 bit.

short4 : Empat bilangan bulat 16 bit dengan tanda tangan

Typedef dari: __attribute__ singkat ((ext_vector_type(4)))

Vektor empat Shorts. Keempat isian pendek ini dikemas ke dalam satu ruang isian 64 bit dengan penyelarasan 64 bit.

size_t : Tipe ukuran tidak bertanda tangan

Typedef dari: uint64_t Saat mengompilasi untuk 64 bit.

Typedef dari: uint32_t Saat mengompilasi untuk 32 bit.

Jenis ukuran yang tidak ditandatangani. Jumlah bit bergantung pada flag kompilasi.

ssize_t : Jenis ukuran bertanda tangan

Typedef dari: int64_t Saat mengompilasi untuk 64 bit.

Typedef dari: int32_t Saat mengompilasi untuk 32 bit.

Jenis ukuran yang ditandatangani. Jumlah bit bergantung pada flag kompilasi.

uchar : Bilangan bulat tanpa tanda tangan 8 bit

Typedef dari: uint8_t

Jenis bilangan bulat tanpa tanda tangan 8 bit.

uchar2 : Dua bilangan bulat tanpa tanda tangan 8 bit

Typedef dari: uchar __attribute__((ext_vector_type(2)))

Vektor dua uchar. Kedua kolom uchar ini dikemas ke dalam satu kolom 16 bit dengan perataan 16 bit.

uchar3 : Tiga bilangan bulat tanpa tanda tangan 8 bit

Typedef dari: uchar __attribute__((ext_vector_type(3)))

Vektor tiga uchar. Ketiga kolom uchar ini dikemas ke dalam satu kolom 32 bit dengan penyelarasan 32 bit.

uchar4 : Empat bilangan bulat tanpa tanda tangan 8 bit

Typedef dari: uchar __attribute__((ext_vector_type(4)))

Vektor empat uchar. Keempat kolom uchar ini dikemas ke dalam satu kolom 32 bit dengan penyelarasan 32 bit.

uint : Bilangan bulat tanpa tanda tangan 32 bit

Typedef dari: uint32_t

Jenis bilangan bulat tanpa tanda tangan 32 bit.

uint16_t : Bilangan bulat tanpa tanda tangan 16 bit

Typedef dari: singkat tanpa tanda tangan

Jenis bilangan bulat tanpa tanda tangan 16 bit.

uint2 : Dua bilangan bulat tanpa tanda tangan 32 bit

Typedef dari: uint __attribute__((ext_vector_type(2)))

Vektor dua uint. Kedua uint ini dikemas ke dalam satu bidang 64 bit dengan penyelarasan 64 bit.

uint3 : Tiga bilangan bulat tanpa tanda tangan 32 bit

Typedef dari: uint __attribute__((ext_vector_type(3)))

Vektor tiga uint. Ketiga uint ini dikemas ke dalam satu kolom 128 bit dengan penyelarasan 128 bit.

uint32_t : Bilangan bulat tanpa tanda tangan 32 bit

Jenis defisit dari: int tanpa tanda tangan

Jenis bilangan bulat tanpa tanda tangan 32 bit.

uint4 : Empat bilangan bulat tanpa tanda tangan 32 bit

Typedef dari: uint __attribute__((ext_vector_type(4)))

Vektor empat uint. Keempat uint ini dikemas ke dalam satu kolom 128 bit dengan penyelarasan 128 bit.

uint64_t : Bilangan bulat tanpa tanda tangan 64 bit

Typedef dari: panjang tanpa tanda tangan Dihapus dari API level 21 dan yang lebih tinggi

Jenis: panjang tanpa tanda tangan Ditambahkan di API level 21

Jenis bilangan bulat tanpa tanda tangan 64 bit.

uint8_t : Bilangan bulat tanpa tanda tangan 8 bit

Typedef dari: karakter tak bertanda

Jenis bilangan bulat tanpa tanda tangan 8 bit.

ulong : Bilangan bulat tanpa tanda tangan 64 bit

Typedef dari: uint64_t

Jenis bilangan bulat tanpa tanda tangan 64 bit.

ulong2 : Dua bilangan bulat tanpa tanda tangan 64 bit

Typedef dari: ulong __attribute__((ext_vector_type(2)))

Vektor dua ulong. Kedua ulong ini dikemas ke dalam satu kolom 128 bit dengan penyelarasan 128 bit.

ulong3 : Tiga bilangan bulat tanpa tanda tangan 64 bit

Typedef dari: ulong __attribute__((ext_vector_type(3)))

Vektor tiga ulong. Ketiga kolom ulong ini dikemas ke dalam satu kolom 256 bit dengan penyelarasan 256 bit.

ulong4 : Empat bilangan bulat tanpa tanda tangan 64 bit

Typedef dari: ulong __attribute__((ext_vector_type(4)))

Vektor empat ulong. Keempat kolom ulong ini dikemas ke dalam satu kolom 256 bit dengan penyelarasan 256 bit.

ushort : Bilangan bulat tanpa tanda tangan 16 bit

Typedef dari: uint16_t

Jenis bilangan bulat tanpa tanda tangan 16 bit.

ushort2 : Dua bilangan bulat tanpa tanda tangan 16 bit

Typedef dari: ushort __attribute__((ext_vector_type(2)))

Vektor dua ushort. Dua kolom ushort ini dikemas ke dalam satu kolom 32 bit dengan penyelarasan 32 bit.

ushort3 : Tiga bilangan bulat tanpa tanda tangan 16 bit

Typedef dari: ushort __attribute__((ext_vector_type(3)))

Vektor tiga ushort. Tiga kolom ushort ini dikemas ke dalam satu bidang 64 bit dengan penyelarasan 64 bit.

ushort4 : Empat bilangan bulat tanpa tanda tangan 16 bit

Typedef dari: ushort __attribute__((ext_vector_type(4)))

Vektor empat ushort. Keempat kolom ushort ini dikemas ke dalam satu bidang 64 bit dengan penyelarasan 64 bit.