Referensi RenderScript Runtime API

Ringkasan

RenderScript adalah runtime berperforma tinggi yang menyediakan operasi komputasi di level native. Kode RenderScript dikompilasi pada perangkat saat runtime untuk memungkinkan independensi platform juga.

Dokumentasi referensi ini menjelaskan API runtime RenderScript, yang dapat Anda gunakan untuk menulis kode RenderScript di C99. File header komputasi RenderScript otomatis disertakan untuk Anda.

Untuk menggunakan RenderScript, Anda perlu menggunakan API runtime RenderScript yang didokumentasikan di sini serta API framework Android untuk RenderScript. Untuk dokumentasi tentang API framework Android, lihat referensi paket android.renderscript.

Untuk informasi selengkapnya tentang cara mengembangkan aplikasi dengan RenderScript dan cara runtime dan API framework Android berinteraksi, lihat panduan developer RenderScript dan Contoh RenderScript.

Tipe Numerik

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.

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

Tipe Objek

Jenis di bawah ini digunakan untuk memanipulasi objek RenderScript seperti alokasi, sampler, elemen, dan skrip. Sebagian besar objek ini dibuat menggunakan Java RenderScript API.

Jenis
rs_allocation Menangani alokasi
rs_allocation_cubemap_face Enum untuk memilih tampilan peta kubus
rs_allocation_usage_type Bitfield untuk menentukan cara alokasi digunakan
rs_data_Kind Jenis data elemen
rs_data_type [tipe_data_rs] Jenis data dasar elemen
rs_element Menangani elemen
rs_sampler Menangani Sampler
rs_sampler_value Nilai T pengemasan sampel
rs_script Tangani ke Skrip
rs_type [tipe_rs] Menangani ke Jenis
rs_yuv_format Format YUV

Fungsi Konversi

Fungsi di bawah ini mengonversi dari jenis vektor numerik ke jenis vektor lainnya, atau dari satu representasi warna ke representasi lainnya.

Fungsi
konversi Mengonversi vektor numerik
rsPackColorTo8888 Membuat RGBA uchar4 dari float
rsUnpackColor8888 Membuat RGBA float4 dari uchar4
rsYuvToRGBA Mengonversi nilai YUV menjadi RGBA

Fungsi dan Konstanta Matematis

Fungsi matematika di bawah ini dapat diterapkan pada skalar dan vektor. Jika diterapkan ke vektor, nilai yang ditampilkan adalah vektor dari fungsi yang diterapkan ke setiap entri input.

Contoh:
float3 a, b;
// The following call sets
// a.x to sin(b.x),
// a.y to sin(b.y), and
// a.z to sin(b.z).
a = sin(b);

Lihat Fungsi Matematika Vektor untuk fungsi seperti jarak() dan panjang() yang menafsirkan input sebagai vektor tunggal dalam ruang dimensi n.

Presisi operasi matematika pada float 32 bit dipengaruhi oleh pragmas rs_fp_relaxed dan rs_fp_full. Di bawah rs_fp_relaxed, nilai subnormal dapat dikosongkan ke nol dan pembulatan dapat dilakukan menuju nol. Sebagai perbandingan, rs_fp_full memerlukan penanganan nilai subnormal yang benar, yaitu lebih kecil dari 1,17549435e-38f. {i>rs_fp_rull<i} juga membutuhkan pembulatan ke terdekat dengan ikatan ke genap.

Kompromi yang berbeda presisi/kecepatan dapat dicapai dengan menggunakan varian fungsi matematika umum. Fungsi dengan nama yang diawali dengan

  • native_: Dapat memiliki implementasi hardware kustom dengan presisi yang lebih rendah. Selain itu, nilai subnormal mungkin akan menjadi nol, pembulatan ke arah nol dapat digunakan, dan input NaN dan tak terbatas mungkin tidak ditangani dengan benar.
  • half_: Dapat melakukan komputasi internal menggunakan float 16 bit. Selain itu, nilai subnormal mungkin menjadi nol, dan pembulatan ke nol dapat digunakan.

Konstanta
PI_M_1 1 / pi, sebagai float 32 bit
PI_M_2 2 / pi, sebagai float 32 bit
SQRTPI_M_2 2 / sqrt(pi), sebagai float 32 bit
M_E e, sebagai float 32 bit
M_LN10 log_e(10), sebagai float 32 bit
M_LN2 log_e(2), sebagai float 32 bit
M_LOG10E log_10(e), sebagai float 32 bit
M_LOG2E log_2(e), sebagai float 32 bit
P_PI pi, sebagai float 32 bit
P_PI_2 pi / 2, sebagai float 32 bit
P_PI_4 pi / 4, sebagai float 32 bit
SQRT1_2 1 / sqrt(2), sebagai float 32 bit
SQRT2 sqrt(2), sebagai float 32 bit
Fungsi
abs Nilai absolut dari bilangan bulat
acos Kosinus terbalik
acosh Kosinus hiperbolik terbalik
acospi Kosinus terbalik dibagi pi
asin Sinus terbalik
asinh Sinus hiperbolik terbalik
asinpi Sinus terbalik dibagi pi
atan Tangen terbalik
atan2 Tangen terbalik dari suatu rasio
atan2pi Tangen terbalik dari suatu rasio, dibagi dengan pi
atannt Tangen hiperbolik terbalik
atanpi Tangen terbalik dibagi pi
cbrt Akar pangkat tiga
ceil Bilangan bulat terkecil yang tidak kurang dari nilai
penjepit Membatasi nilai ke rentang
klz Jumlah 0 bit di depan
tanda salinan Menyalin tanda suatu angka ke yang lain
cos Kosinus
cosh Kosinus hiperbolik
cospi Kosinus suatu angka dikalikan dengan pi
derajat Mengubah radian menjadi derajat
erf Fungsi error matematika
erfc Fungsi kesalahan komplementer matematika
habis e dipangkatkan ke angka
eksp10 10 dipangkatkan
eksp2 2 dipangkatkan ke suatu angka
ekspm1 e dipangkatkan ke angka minus satu
fab Nilai absolut dari float
fdim Perbedaan positif antara dua nilai
lantai Bilangan bulat terkecil yang tidak lebih besar dari nilai
fma Kalikan dan tambahkan
fmax Maksimum dua float
fmin Minimum dua float
fmod Modulo
fraksi Bagian pecahan positif
frexp Eksponen dan mantissa biner
resip_setengah Resiprokal dikomputasi dengan presisi 16 bit
half_rsqrt Kebalikan dari akar kuadrat yang dihitung dengan presisi 16 bit
setengah_sqrt Root kuadrat dihitung dengan presisi 16 bit
hipot Sisi miring
ilogb Eksponen basis dua
ldexp Membuat floating point dari mantissa dan eksponen
lgamma Logaritma alami fungsi gamma
log Logaritma alami
log10 Logaritma basis 10
log1p Logaritma alami nilai ditambah 1
log2 Logaritma basis 2
logb Eksponen basis dua
gila Kalikan dan tambahkan
maks Maksimum
mnt Minimum
campuran Mencampur dua nilai
modf Komponen integral dan pecahan
nan Bukan Angka
nan_half Bukan Angka
native_acos Perkiraan kosinus terbalik
native_acosh Perkiraan kosinus hiperbolik terbalik
acospi_native Perkiraan kosinus terbalik dibagi pi
native_asin Perkiraan sinus terbalik
native_asinh Perkiraan sinus hiperbolik terbalik
native_asinpi Perkiraan sinus terbalik dibagi dengan pi
native_atan Perkiraan tangen terbalik
native_atan2 Memperkirakan tangen terbalik dari sebuah rasio
native_atan2pi Memperkirakan tangen terbalik dari sebuah rasio, dibagi dengan pi
native_atanh Memperkirakan tangen hiperbolik terbalik
native_atanpi Perkiraan tangen terbalik dibagi pi
native_cbrt Perkiraan akar pangkat tiga
cos_native Perkiraan kosinus
native_cosh Perkiraan kosinus hipebolik
cospi_native Perkiraan kosinus suatu angka dikalikan dengan pi
native_divide Perkiraan pembagian
native_exp Perkiraan e dinaikkan ke angka
native_exp10 Perkiraan 10 dinaikkan ke jumlah
native_exp2 Perkiraan 2 dinaikkan ke angka
native_expm1 Perkiraan e dinaikkan ke angka minus satu
hipot_native Perkiraan sisi miring
native_log Perkiraan logaritma natural
native_log10 Logaritma perkiraan basis 10
native_log1p Perkiraan logaritma natural nilai plus 1
native_log2 Logaritma perkiraan basis 2
native_powr Perkiraan basis positif yang dipangkatkan ke eksponen
resip_native Perkiraan timbal balik
native_rootn Perkiraan akar ke-n
native_rsqrt Perkiraan kebalikan dari akar kuadrat
native_sin Perkiraan sinus
sinko_native Perkiraan sinus dan kosinus
native_sinh Perkiraan sinus hiperbolik
sinpi_native Perkiraan sinus suatu angka dikalikan dengan pi
native_sqrt Perkiraan akar kuadrat
cokelat_native Perkiraan tangen
tanh_native Perkiraan tangen hiperbolik
tanpi_native Perkiraan tangen sebuah angka dikalikan dengan pi
berikutnya Bilangan floating point berikutnya
pow Basis yang dipangkatkan ke eksponen
pown Basis yang dipangkatkan ke eksponen bilangan bulat
powr Basis positif yang dipangkatkan ke eksponen
radian Mengubah derajat menjadi radian
sisa Sisa pembagian
remquo Sisa dan hasil bagi dari suatu pembagian
hilangkan Bulatkan ke genap
root Akar ke-n
lingkaran Bulatkan dari nol
rsRand Angka acak semu
rsqrt Kebalikan dari akar kuadrat
tanda tangan Tanda nilai
sin Sinus
sinko Sinus dan kosinus
sinh Sinus hiperbolik
sinpi Sinus angka yang dikalikan dengan pi
sqrt Akar pangkat dua
step (langkah) 0 jika lebih kecil dari nilai, 0 jika tidak
tan Tangen
tanh Tangen hiperbolik
tanpi Tangen sebuah angka dikalikan dengan pi
tgamma Fungsi gamma
trunc Memotong floating point

Fungsi Matematika Vektor

Fungsi ini menafsirkan argumen input sebagai representasi vektor dalam ruang n-dimensi.

Presisi operasi matematika pada float 32 bit dipengaruhi oleh pragmas rs_fp_relaxed dan rs_fp_full. Lihat Fungsi dan Konstanta Matematika untuk mengetahui detailnya.

Kompromi yang berbeda presisi/kecepatan dapat dicapai dengan menggunakan varian fungsi matematika umum. Fungsi dengan nama yang diawali dengan

  • native_: Dapat memiliki implementasi hardware kustom dengan presisi yang lebih rendah. Selain itu, nilai subnormal mungkin akan menjadi nol, pembulatan ke arah nol dapat digunakan, dan input NaN dan tak terbatas mungkin tidak ditangani dengan benar.
  • fast_: Dapat melakukan komputasi internal menggunakan float 16 bit. Selain itu, nilai subnormal mungkin menjadi nol, dan pembulatan ke nol dapat digunakan.

Fungsi
silang Perkalian silang dua vektor
jarak Jarak antara dua titik
titik Perkalian titik dari dua vektor
jarak_cepat Perkiraan jarak antara dua titik
fast_length [panjang_cepat] Perkiraan panjang vektor
normalkan_cepat Perkiraan vektor yang dinormalisasi
length [panjang] Panjang vektor
jarak_native Perkiraan jarak antara dua titik
native_length Perkiraan panjang vektor
normalkan_native Menormalkan sekitar vektor
normalisasi Menormalisasi vektor

Fungsi Matriks

Fungsi-fungsi ini memungkinkan Anda memanipulasi matriks kuadrat dengan peringkat 2x2, 3x3, dan 4x4. Library ini sangat berguna untuk transformasi grafis dan kompatibel dengan OpenGL.

Kami menggunakan indeks berbasis nol untuk baris dan kolom. Misalnya, elemen terakhir dari rs_matrix4x4 ditemukan di (3, 3).

RenderScript menggunakan matriks utama kolom dan vektor berbasis kolom. Transformasi vektor dilakukan dengan melakukan postmultiplying vektor, misalnya (matrix * vector), seperti yang disediakan oleh rsMatrixMultiply().

Untuk membuat matriks transformasi yang melakukan dua transformasi sekaligus, kalikan dua matriks sumber, dengan transformasi pertama sebagai argumen yang tepat. Misalnya, untuk membuat matriks transformasi yang menerapkan transformasi s1 diikuti dengan s2, panggil rsMatrixLoadMultiply(&combined, &s2, &s1). ID ini berasal dari s2 * (s1 * v), yang merupakan (s2 * s1) * v.

Kita memiliki dua gaya fungsi untuk membuat matriks transformasi: rsMatrixLoadTransformation dan rsMatrixTransformation. Gaya pertama hanya menyimpan matriks transformasi dalam argumen pertama. Yang kedua mengubah matriks transformasi yang sudah ada sehingga transformasi baru terjadi terlebih dahulu. Misalnya, jika Anda memanggil rsMatrixTranslate() pada matriks yang sudah melakukan penskalaan, matriks yang dihasilkan saat diterapkan ke vektor terlebih dahulu akan melakukan terjemahan, lalu penskalaan.

Fungsi
rsExtractFrustumPlanes Menghitung bidang frustum
rsIsSphereInFrustum Memeriksa apakah bola berada di dalam bidang frustum
rsMatrixGet Mendapatkan satu elemen
rsMatrixInverse Membalikkan matriks yang telah diterapkan
rsMatrixInverseTranspose Membalikkan dan melakukan transposisi matriks di tempatnya
rsMatrixLoad Memuat atau menyalin matriks
rsMatrixLoadFrustum Memuat matriks proyeksi frustum
rsMatrixLoadIdentity Memuat matriks identitas
rsMatrixLoadMultiply Kalikan dua matriks
rsMatrixLoadOrtho Memuat matriks proyeksi ortografis
rsMatrixLoadPerspective Memuat matriks proyeksi perspektif
rsMatrixLoadRotate Memuat matriks rotasi
rsMatrixLoadScale Memuat matriks penskalaan
rsMatrixLoadTranslate Memuat matriks terjemahan
rsMatrixMultiply Mengalikan matriks dengan vektor atau matriks lain
rsMatrixRotate Menerapkan rotasi ke matriks transformasi
rsMatrixScale Menerapkan penskalaan ke matriks transformasi
rsMatrixSet Tetapkan satu elemen
rsMatrixTranslate Menerapkan terjemahan ke matriks transformasi
rsMatrixTranspose Transpose tempat matriks

Fungsi Kuaternion

Fungsi berikut memanipulasi kuarternion.

Fungsi
rsQuaternionAdd Tambahkan dua angka empat
rsQuaternionConjugate Menggabungkan kuaternion
rsQuaternionDot Perkalian titik dari dua kuaternion
rsQuaternionGetMatrixUnit Mendapatkan matriks rotasi dari kuaternion
rsQuaternionLoadRotate Membuat kuaternion rotasi
rsQuaternionLoadRotateUnit Kuaternion yang mewakili rotasi terkait vektor satuan arbitrer
rsQuaternionMultiply Mengalikan kuaternion dengan skalar atau kuaternion lainnya
rsQuaternionNormalize Menormalisasi kuarternion
rsQuaternionSet Membuat angka empat
rsQuaternionSlerp Jenis interpolasi linier bola antara dua kuaternion

Fungsi Pembaruan Atomik

Untuk memperbarui nilai yang dibagikan di antara beberapa thread, gunakan fungsi di bawah. Cara ini memastikan bahwa nilai diupdate secara atomik, yaitu memori membaca, update, dan penulisan memori dilakukan dalam urutan yang benar.

Fungsi ini lebih lambat daripada fungsi non-atomik yang setara, jadi gunakan hanya saat sinkronisasi diperlukan.

Perlu diperhatikan bahwa di RenderScript, kode Anda kemungkinan akan berjalan di thread terpisah meskipun Anda tidak membuatnya secara eksplisit. Runtime RenderScript akan sangat sering membagi eksekusi satu kernel ke beberapa thread. Mengupdate global harus dilakukan dengan fungsi atomik. Jika memungkinkan, ubah algoritma Anda untuk menghindarinya sama sekali.

Fungsi
rsAtomicAdd Penambahan thread aman
rsAtomicAnd Bitwise yang aman untuk thread dan
rsAtomicCas Pembandingan dan setelan yang aman untuk thread
rsAtomicDec Pengurangan yang aman untuk thread
rsAtomicInc Penambahan yang aman untuk thread
rsAtomicMax Maksimum aman untuk thread
rsAtomicMin Minimum aman untuk thread
rsAtomicOr Bitwise atau thread-safe thread
rsAtomicSub Pengurangan yang aman untuk thread
rsAtomicXor Eksklusif atau khusus untuk thread yang aman

Tipe dan Fungsi Waktu

Fungsi di bawah dapat digunakan untuk mengetahui waktu jam saat ini dan waktu aktif sistem saat ini. Tidak disarankan untuk memanggil fungsi ini di dalam {i>kernel<i}.

Jenis
rs_time_t Detik sejak 1 Januari 1970
rs_tm Struktur tanggal dan waktu
Fungsi
rsGetDt Waktu berlalu sejak panggilan terakhir
rsLocaltime Konversikan ke waktu lokal
rsTime Detik sejak 1 Januari 1970
rsUptimeMillis Waktu beroperasi sistem dalam milidetik
rsUptimeNanos Waktu beroperasi sistem dalam nanodetik

Fungsi Pembuatan Alokasi

Fungsi di bawah dapat digunakan untuk membuat Alokasi dari Skrip.

Fungsi ini dapat dipanggil langsung atau tidak langsung dari fungsi yang dapat dipanggil. Jika beberapa jalur alur kontrol dapat mengakibatkan panggilan ke fungsi ini dari fungsi kernel RenderScript, error compiler akan dihasilkan.

Fungsi
rsCreateAllocation Membuat objek rs_allocation dari Jenis tertentu.
rsCreateElement Membuat objek rs_element dari jenis data yang ditentukan
rsCreatePixelElement Membuat objek rs_element dari jenis data dan jenis data yang ditentukan
rsCreateType Membuat objek rs_type dengan atribut Elemen dan bentuk yang ditentukan
rsCreateVectorElement Membuat objek rs_element dari tipe data dan lebar vektor yang ditentukan

Fungsi Akses Data Alokasi

Fungsi di bawah ini dapat digunakan untuk mendapatkan dan menetapkan sel yang membentuk alokasi.

  • Masing-masing sel diakses menggunakan fungsi rsGetElementAt* dan rsSetElementAt.
  • Beberapa sel dapat disalin menggunakan fungsi rsAllocationCopy* dan rsAllocationV*.
  • Untuk mendapatkan nilai melalui sampler, gunakan rsSample.
Fungsi rsGetElementAt dan rsSetElement* kurang diberi nama. Fungsi ini tidak mendapatkan atau menetapkan elemen, yang mirip dengan jenis data; melainkan mendapatkan atau menetapkan sel. Anggap mereka sebagai {i>rsGetCellAt<i} dan {i>rsSetCellAt<i}.

Fungsi
rsAllocationCopy1DRange Menyalin sel berturut-turut antar-alokasi
rsAllocationCopy2DRange Menyalin wilayah persegi panjang sel di antara alokasi
rsAllocationVLoadX Mendapatkan vektor dari alokasi skalar
rsAllocationVStoreX Menyimpan vektor ke dalam alokasi skalar
rsGetElementAt Menampilkan sel dari alokasi
rsGetElementAtYuv_uchar_U Mendapatkan komponen U dari alokasi YUV
rsGetElementAtYuv_uchar_V Mendapatkan komponen V dari alokasi YUV
rsGetElementAtYuv_uchar_Y Mendapatkan komponen Y dari alokasi YUV
rsSample Mengambil sampel nilai dari alokasi tekstur
rsSetElementAt Menetapkan sel alokasi

Fungsi Karakteristik Objek

Fungsi di bawah ini dapat digunakan untuk membuat kueri karakteristik objek Alokasi, Elemen, atau Sampler. Objek ini dibuat dari Java. Anda tidak dapat membuatnya dari skrip.

Alokasi:

Alokasi adalah metode utama yang digunakan untuk meneruskan data ke dan dari kernel RenderScript.

File ini adalah kumpulan sel terstruktur yang dapat digunakan untuk menyimpan bitmap, tekstur, titik data arbitrer, dll.

Kumpulan sel ini dapat memiliki banyak dimensi (X, Y, Z, Array0, Array1, Array2, Array3), wajah (untuk peta kubus), dan tingkat detail (untuk mipmapping).

Lihat android.renderscript.Allocation untuk mengetahui detail tentang cara membuat Alokasi.

Elemen:

Istilah "elemen" digunakan secara ambigu di RenderScript, karena informasi jenis untuk sel Alokasi dan pembuatan instance jenis tersebut. Contoh:

  • rs_element adalah handle untuk spesifikasi jenis, dan
  • Dalam fungsi seperti rsGetElementAt(), "element" berarti pembuatan instance jenis, yaitu sel Alokasi.

Fungsi di bawah memungkinkan Anda membuat kueri untuk karakteristik spesifikasi jenis.

Elemen dapat menentukan jenis data sederhana seperti yang ditemukan di C, misalnya bilangan bulat, float, atau boolean. Class ini juga dapat menentukan handle untuk objek RenderScript. Lihat rs_data_type untuk mengetahui daftar jenis dasar.

Elemen dapat menentukan versi vektor ukuran tetap (dengan ukuran 2, 3, atau 4) dari jenis dasar. Elemen dapat dikelompokkan bersama ke dalam Elemen kompleks, sehingga menghasilkan definisi struktur C yang setara.

Elemen juga dapat memiliki sejenis, yaitu informasi semantik yang digunakan untuk menafsirkan data piksel. Lihat rs_data_Kind.

Saat membuat Alokasi elemen umum, Anda cukup menggunakan salah satu dari berbagai Elemen bawaan seperti F32_2.

Untuk membuat Element yang kompleks, gunakan class Java Element.Builder.

Sampler:

Objek Sampler menentukan cara Alokasi dapat dibaca sebagai struktur dalam {i>kernel<i}. Lihat android.renderscript.S.

Fungsi
rsAllocationGetDimFaces Kehadiran lebih dari satu wajah
rsAllocationGetDimLOD Adanya tingkat detail
rsAllocationGetDimX Ukuran dimensi X
rsAllocationGetDimY Ukuran dimensi Y
rsAllocationGetDimZ Ukuran dimensi Z
rsAllocationGetElement Mendapatkan objek yang mendeskripsikan sel Alokasi
rsClearObject Melepaskan objek
rsElementGetBytesSize Ukuran Elemen
rsElementGetDataKind Jenis Elemen
rsElementGetDataType Jenis data Elemen
rsElementGetSubElement Sub-elemen Elemen kompleks
rsElementGetSubElementArraySize Ukuran array sub-elemen dari Elemen kompleks
rsElementGetSubElementCount Jumlah sub-elemen
rsElementGetSubElementName Nama sub-elemen
rsElementGetSubElementNameLength Panjang nama sub-elemen
rsElementGetSubElementOffsetBytes Offset sub-elemen yang dibuat instance-nya
rsElementGetVectorSize Ukuran vektor Elemen
rsIsObject Periksa nama sebutan channel yang kosong
rsSamplerGetAnisotropy Anisotropi Sampler
rsSamplerGetMagnification Nilai pembesaran sampler
rsSamplerGetMinification Nilai minifikasi sampler
rsSamplerGetWrapS Nilai S wrapper sampel
rsSamplerGetWrapT Nilai T pengemasan sampel

Tipe dan Fungsi Pemanggilan Kernel

Fungsi rsForEach() dapat digunakan untuk memanggil kernel root suatu skrip.

Fungsi lainnya digunakan untuk mendapatkan karakteristik pemanggilan kernel yang mengeksekusi, seperti dimensi dan indeks saat ini. Fungsi ini menggunakan rs_kernel_context sebagai argumen.

Jenis
rs_for_each_strategy_t Urutan pemrosesan sel yang disarankan
rs_kernel Menangani fungsi kernel
konteks_kernel_rs_kernel Menangani konteks pemanggilan kernel
rs_script_call_t Informasi iterasi sel
Fungsi
rsForSetiap Meluncurkan kernel
rsForEachInternal (API Internal) Meluncurkan kernel dalam Skrip saat ini (dengan nomor slot)
rsForEachWithOptions Meluncurkan kernel dengan opsi
rsGetArray0 Indeks dalam dimensi Array0 untuk konteks kernel yang ditentukan
rsGetArray1 Indeks dalam dimensi Array1 untuk konteks kernel yang ditentukan
rsGetArray2 Indeks dalam dimensi Array2 untuk konteks kernel yang ditentukan
rsGetArray3 Indeks dalam dimensi Array3 untuk konteks kernel yang ditentukan
rsGetDimArray0 Ukuran dimensi Array0 untuk konteks kernel yang ditentukan
rsGetDimArray1 Ukuran dimensi Array1 untuk konteks kernel yang ditentukan
rsGetDimArray2 Ukuran dimensi Array2 untuk konteks kernel yang ditentukan
rsGetDimArray3 Ukuran dimensi Array3 untuk konteks kernel yang ditentukan
rsGetDimHasFaces Kehadiran lebih dari satu wajah untuk konteks kernel yang ditentukan
rsGetDimLod Jumlah tingkat detail untuk konteks kernel yang ditentukan
rsGetDimX Ukuran dimensi X untuk konteks kernel yang ditentukan
rsGetDimY Ukuran dimensi Y untuk konteks kernel yang ditentukan
rsGetDimZ Ukuran dimensi Z untuk konteks kernel yang ditentukan
rsGetFace Koordinat Wajah untuk konteks kernel yang ditentukan
rsGetLod Indeks dalam dimensi Tingkat Detail untuk konteks kernel yang ditentukan

Fungsi Masukan/Keluaran

Fungsi-fungsi ini digunakan untuk:

  • Mengirim informasi ke klien Java, dan
  • Kirim alokasi yang diproses atau terima alokasi berikutnya untuk diproses.

Fungsi
rsAllocationIoReceive Menerima konten baru dari antrean
rsAllocationIoSend Kirim konten baru ke antrean
rsSendToClient Mengirim pesan ke klien, tidak memblokir
rsSendToClientBlocking Mengirim pesan ke klien, memblokir

Fungsi Debug

Fungsi di bawah ini dimaksudkan untuk digunakan selama pengembangan aplikasi. Keduanya tidak boleh digunakan dalam aplikasi pengiriman.

Fungsi
rsDebug Catat pesan dan nilai

Tipe dan Fungsi Grafis

Subsistem grafis RenderScript telah dihapus pada API level 23.