概要
RenderScript は、ネイティブ レベルでコンピューティング オペレーションを行う高パフォーマンスのランタイムです。RenderScript コードは、プラットフォームに依存しないように、実行時にデバイスでコンパイルされます。
このリファレンス ドキュメントでは、C99 で RenderScript コードを記述するために利用できる RenderScript ランタイム API について説明します。RenderScript コンピューティング ヘッダー ファイルは、自動的にインクルードされます。
RenderScript を使用するには、このドキュメントに記載されている RenderScript ランタイム API と、RenderScript 用の Android フレームワーク API を使用する必要があります。Android フレームワーク API のドキュメントについては、android.renderscript パッケージ リファレンスをご覧ください。
RenderScript を使用して開発する方法と、ランタイム API と Android フレームワーク API の相互作用について詳しくは、RenderScript デベロッパー ガイドと RenderScript のサンプルをご覧ください。
数値型
スカラー:
RenderScript は、次のスカラー数値型をサポートしています。
| 8 ビット | 16 ビット | 32 ビット | 64 ビット | |
| 整数: | char、int8_t | 短い、int16_t | int32_t | long、long long、int64_t |
| 符号なし整数: | uchar、uint8_t | ushort、uint16_t | uint、uint32_t | ulong、uint64_t |
| 浮動小数点数: | ハーフ | 浮動小数点数 | double |
ベクトル:
RenderScript は、長さ 2、3、4 の固定サイズのベクトルをサポートします。ベクトルは、共通の型名の後に 2、3、または 4 を付加して宣言します。 (例: float4、int3、double2、ulong4)。
ベクター リテラルを作成するには、ベクター型を使用し、次に中かっこで囲まれた値(例: (float3){1.0f, 2.0f, 3.0f})を使用します。
ベクトルのエントリには、さまざまな命名スタイルを使用してアクセスできます。
単一エントリにアクセスするには、変数名の後ろにドットを付加し、
- x、y、z、w は、
- r、g、b、a という文字は、
- 文字 s または S の後にゼロベースのインデックスが続きます。
たとえば、int4 myVar; の場合は以下は同じ結果になります。
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
複数の文字またはインデックスを連結した識別子を使用すると、ベクトルの複数のエントリに一度にアクセスできます。結果として得られるベクトルのサイズは、名前が付けられたエントリの数と等しくなります。
上記の例では、myVar.yz、myVar.gb、myVar.s12、myVar.S12 を使用して、中央の 2 つのエントリにアクセスできます。
エントリは連続したり、昇順にしたりする必要はありません。割り当てを行おうとしない限り、エントリを繰り返すこともできます。また、複数の命名スタイルを混在させることはできません。
以下に、できることとできないことの例を示します。
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
行列と四元数:
RenderScript は、サイズが 2x2、3x3、4x4 の浮動小数点数の固定サイズの正方形行列をサポートしています。型の名前は rs_matrix2x2、rs_matrix3x3、rs_matrix4x4 です。オペレーションのリストについては、行列関数をご覧ください。
四元数も rs_quaternion を介してサポートされています。オペレーションのリストについては、Quaterion 関数をご覧ください。
| 型 | |
|---|---|
| 文字 2 | 2 つの 8 ビット符号付き整数 |
| char3 | 8 ビット符号付き整数が 3 つ |
| char4 | 4 つの 8 ビット符号付き整数 |
| double2 | 2 つの 64 ビット浮動小数点数 |
| double3 | 3 つの 64 ビット浮動小数点数 |
| double4 | 4 つの 64 ビット浮動小数点数 |
| float2 | 2 つの 32 ビット浮動小数点数 |
| float3 | 3 つの 32 ビット浮動小数点数 |
| float4 | 4 つの 32 ビット浮動小数点数 |
| half | 16 ビット浮動小数点値 |
| half2 | 2 つの 16 ビット浮動小数点数 |
| half3 | 3 つの 16 ビット浮動小数点数 |
| half4 | 4 つの 16 ビット浮動小数点数 |
| int16_t | 16 ビット符号付き整数 |
| int2 | 2 つの 32 ビット符号付き整数 |
| int3 | 3 つの 32 ビット符号付き整数 |
| int32_t | 32 ビット符号付き整数 |
| int4 | 4 つの 32 ビット符号付き整数 |
| int64_t | 64 ビット符号付き整数 |
| int8_t | 8 ビット符号付き整数 |
| long2 | 2 つの 64 ビット符号付き整数 |
| long3 | 64 ビット符号付き整数が 3 つ |
| long4 | 4 つの 64 ビット符号付き整数 |
| rs_matrix2x2 | 32 ビット浮動小数点数の 2x2 行列 |
| rs_matrix3x3 | 32 ビット浮動小数点数の 3x3 行列 |
| rs_matrix4x4 | 32 ビット浮動小数点数の 4x4 行列 |
| rs_quaternion | 四元数 |
| short2 | 2 つの 16 ビット符号付き整数 |
| short3 | 16 ビット符号付き整数が 3 つ |
| short4 | 4 つの 16 ビット符号付き整数 |
| size_t | 符号なしのサイズ型 |
| ssize_t | 署名付きサイズタイプ |
| uchar | 8 ビット符号なし整数 |
| uchar2 | 2 つの 8 ビット符号なし整数 |
| uchar3 | 3 つの 8 ビット符号なし整数 |
| uchar4 | 4 つの 8 ビット符号なし整数 |
| uint | 32 ビット符号なし整数 |
| uint16_t | 16 ビット符号なし整数 |
| uint2 | 2 つの 32 ビット符号なし整数 |
| uint3 | 3 つの 32 ビット符号なし整数 |
| uint32_t | 32 ビット符号なし整数 |
| uint4 | 4 つの 32 ビット符号なし整数 |
| uint64_t | 64 ビット符号なし整数 |
| uint8_t | 8 ビット符号なし整数 |
| ulong | 64 ビット符号なし整数 |
| ulong2 | 2 つの 64 ビット符号なし整数 |
| ulong3 | 3 つの 64 ビット符号なし整数 |
| ulong4 | 4 つの 64 ビット符号なし整数 |
| ushort | 16 ビット符号なし整数 |
| ushort2 | 2 つの 16 ビット符号なし整数 |
| ushort3 | 3 つの 16 ビット符号なし整数 |
| ushort4 | 4 つの 16 ビット符号なし整数 |
オブジェクト型
次の型は、割り当て、サンプラー、要素、スクリプトなどの RenderScript オブジェクトを操作するために使用されます。これらのオブジェクトのほとんどは、Java RenderScript API を使用して作成されます。
| 型 | |
|---|---|
| rs_allocation | 割り当てに対するハンドル |
| rs_allocation_cubemap_face | 立方体の地図の面を選択するための列挙型 |
| rs_allocation_usage_type | 割り当ての使用方法を指定するビットフィールド |
| rs_data_kind | 要素データの種類 |
| rs_data_type | 要素の基本データ型 |
| rs_element | 要素に対するハンドル |
| rs_sampler | サンプラーに対するハンドル |
| rs_sampler_value | サンプラーのラップの T 値 |
| rs_script | スクリプトに対する処理 |
| rs_type | 型のハンドル |
| rs_yuv_format | YUV 形式 |
変換関数
以下の関数は、数値ベクトル型から別の色表現への変換、またはある色表現から別の色表現への変換を行います。
| 関数 | |
|---|---|
| convert | 数値ベクトルを変換する |
| rsPackColorTo8888 | 浮動小数点数から uchar4 RGBA を作成する |
| rsUnpackColor8888 | uchar4 から float4 RGBA を作成する |
| rsYuvToRGBA | YUV 値を RGBA に変換する |
数学定数と数学関数
以下の数学関数は、スカラーとベクトルに適用できます。ベクトルに適用した場合、入力の各エントリに適用される関数のベクトルが返されます。
次に例を示します。
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);
入力を N 次元空間の単一ベクトルとして解釈する distance() や length() などの関数については、ベクトル数学関数をご覧ください。
32 ビット浮動小数点数に対する数学演算の精度は、rs_fp_relaxed プラグと rs_fp_full プラグマの影響を受けます。rs_fp_relaxed では、通常より低い値がゼロにフラッシュされ、ゼロに向かって丸めされる場合があります。これに対して、rs_fp_full は標準外の値(1.17549435e-38f より小さい)を正しく処理する必要があります。rs_fp_rull も、偶数と同点で最も近い値に丸める必要があります。
一般的な数学関数のバリエーションを使用すると、精度と速度のトレードオフを実現できます。名前が
- native_: 精度が低いカスタム ハードウェア実装が含まれる可能性があります。さらに、異常な値がゼロにフラッシュされたり、ゼロへの丸めが使用されたり、NaN 入力と無限大入力が正しく処理されない場合があります。
- third_: 16 ビット浮動小数点数を使用して内部計算を実行できます。さらに、正常でない値はゼロにフラッシュされ、ゼロへの丸めを使用できます。
| 定数 | |
|---|---|
| M_1_PI | 1 / pi(32 ビット浮動小数点数) |
| M_2_PI | 2 / pi(32 ビット浮動小数点数) |
| M_2_SQRTPI | 2 / sqrt(pi)、32 ビット浮動小数点数 |
| M_E | e(32 ビット浮動小数点数) |
| M_LN10 | log_e(10)(32 ビット浮動小数点数)。 |
| M_LN2 | log_e(2)(32 ビット浮動小数点数)。 |
| M_LOG10E | log_10(e)(32 ビット浮動小数点数)。 |
| M_LOG2E | log_2(e)(32 ビット浮動小数点数)。 |
| M_PI | pi(32 ビット浮動小数点数) |
| M_PI_2 | pi / 2(32 ビット浮動小数点数) |
| M_PI_4 | pi / 4(32 ビット浮動小数点数) |
| M_SQRT1_2 | 1 / sqrt(2)(32 ビット浮動小数点数) |
| M_SQRT2 | sqrt(2)(32 ビット浮動小数点数) |
| 関数 | |
|---|---|
| abs | 整数の絶対値 |
| acos | 逆コサイン |
| acosh | 逆双曲線コサイン |
| acospi | 逆コサインを円周率で割ったもの |
| asin | 逆正弦 |
| asinh | 逆双曲線正弦 |
| asinpi | 逆正弦を円周率で除算した値 |
| atan | 逆タンジェント |
| atan2 | 比率の逆タンジェント |
| atan2pi | 比率の逆タンジェントを円周率で割った数値 |
| atanh | 逆双曲線正接 |
| atanpi | 逆タンジェントを円周率で割った数値 |
| cbrt | キューブルート |
| ceil | 特定の値以上の最小の整数 |
| clamp | 値を範囲に制約する |
| clz | 先頭の 0 ビットの数 |
| copysign | 数値の符号を別の符号にコピーします。 |
| cos | コサイン |
| cosh | 双曲線コサイン |
| cospi | 数値に円周率を乗じたコサイン |
| 度 | ラジアンを度数に変換します |
| erf | 数学の誤差関数 |
| erfc | 数学の補完誤差関数 |
| exp | e が数値に上げられる |
| exp10 | 10 の数字が 10 になる |
| exp2 | 2 の累乗数 |
| expm1 | 数字から 1 を引いた e を底とする |
| FAB | 浮動小数点数の絶対値 |
| fdim | 2 つの値の正の差 |
| 下限 | ある値以下の最小の整数 |
| fma | かけ算と足し算を行う |
| fmax | 最大 2 つの浮動小数点数 |
| fmin | 2 つ以上の浮動小数点数。 |
| fmod | モジュロ |
| fract | 正分数部 |
| frexp | 2 進仮数と指数 |
| half_recip | 16 ビット精度で計算された逆数 |
| half_rsqrt | 16 ビット精度で計算された平方根の逆数 |
| half_sqrt | 16 ビット精度で計算された平方根 |
| hypot | 斜辺 |
| ilogb | 2 を底とする指数 |
| ldexp | 仮数と指数から浮動小数点を作成します。 |
| lgamma | ガンマ関数の自然対数 |
| log | 自然対数 |
| log10 | 10 を底とする対数 |
| log1p | 値 + 1 の自然対数 |
| log2 | 2 を底とする対数 |
| logb | 2 を底とする指数 |
| mad | かけ算と足し算を行う |
| max | 最大 |
| min | 最小 |
| mix | 2 つの値を混在させる |
| modf | 積分成分と分数成分 |
| nan | 数値ではありません |
| nan_half | 数値ではありません |
| native_acos | 近似逆コサイン |
| native_acosh | 近似逆双曲線コサイン |
| native_acospi | 円周率で割った近似逆コサイン |
| native_asin | 近似逆正弦 |
| native_asinh | 近似逆双曲線正弦 |
| native_asinpi | 円周率で割った近似逆サイン |
| native_atan | 近似逆タンジェント |
| native_atan2 | 比率の近似逆タンジェント |
| native_atan2pi | 比率の近似逆タンジェントを円周率で割ったもの |
| native_atanh | 近似逆双曲線正接 |
| native_atanpi | 逆タンジェントを円周率で割った近似値 |
| native_cbrt | 近似立方根 |
| native_cos | 近似コサイン |
| native_cosh | 近似双曲線コサイン |
| native_cospi | 数値に円周率を乗じた近似余弦 |
| native_divide | 近似除算 |
| native_exp | 近似 e を数字に累乗する |
| native_exp10 | 約 10 の 1 乗 |
| native_exp2 | 近似 2 を底とする |
| native_expm1 | 近似 e を数字から 1 を引いた値に累乗する |
| native_hypot | 近似斜辺 |
| native_log | 近似自然対数 |
| native_log10 | 近似 10 を底とする対数 |
| native_log1p | 値に 1 を足した近似自然対数 |
| native_log2 | 近似 2 を底とする対数 |
| native_powr | 正の底を指数に累乗する近似値 |
| native_recip | 近似逆数 |
| native_rootn | 近似 n 乗根 |
| native_rsqrt | 平方根の近似逆数 |
| native_sin | 近似正弦 |
| native_sincos | 近似正弦と近似余弦 |
| native_sinh | 近似双曲線正弦 |
| native_sinpi | 数値に円周率を乗じた近似正弦 |
| native_sqrt | 近似平方根 |
| native_tan | 近似タンジェント |
| native_tanh | 近似双曲線正接 |
| native_tanpi | 数値に円周率を乗じた近似タンジェント |
| nextafter | 次の浮動小数点数 |
| pow | 底を指数に累乗する |
| pown | 底を整数の指数に累乗する |
| powr | 正の底を指数に累乗する |
| ラジアン | 度数をラジアンに変換します |
| remainder | 除算の余り |
| remquo | 除算の余りと商 |
| rint | 偶数に丸める |
| rootn | N 乗根 |
| round | ゼロから逆算する |
| rsRand | 擬似乱数 |
| rsqrt | 平方根の逆数 |
| sign | 値の符号 |
| sin | サイン |
| sincos | 正弦と余弦 |
| sinh | 双曲線正弦 |
| sinpi | 数値に円周率を掛けた正弦 |
| sqrt | 平方根 |
| step | 値未満の場合は 0、それ以外の場合は 0 |
| tan | タンジェント |
| tanh | 双曲線正接 |
| tanpi | 数値に円周率を乗じたタンジェント |
| tgamma | ガンマ関数 |
| trunc | 浮動小数点数を切り捨てます。 |
ベクター数学関数
これらの関数は、入力引数を N 次元空間のベクトル表現として解釈します。
32 ビット浮動小数点数に対する数学演算の精度は、rs_fp_relaxed プラグと rs_fp_full プラグマの影響を受けます。詳細については、数学定数と関数をご覧ください。
一般的な数学関数のバリエーションを使用すると、精度と速度のトレードオフを実現できます。名前が
- native_: 精度が低いカスタム ハードウェア実装が含まれる可能性があります。さらに、異常な値がゼロにフラッシュされたり、ゼロへの丸めが使用されたり、NaN 入力と無限大入力が正しく処理されない場合があります。
- fast_: 16 ビット浮動小数点数を使用して内部計算を実行できます。さらに、正常でない値はゼロにフラッシュされ、ゼロへの丸めを使用できます。
| 関数 | |
|---|---|
| cross | 2 つのベクトルの外積 |
| distance | 2 点間の距離 |
| ドット | 2 つのベクトルのドット積 |
| fast_distance | 2 地点間の近似距離 |
| fast_length | ベクトルのおおよその長さ |
| fast_normalize | 正規化された近似ベクトル |
| length | ベクトルの長さ |
| native_distance | 2 地点間の近似距離 |
| native_length | ベクトルのおおよその長さ |
| native_normalize | ベクトルを近似正規化する |
| normalize | ベクトルを正規化する |
行列関数
これらの関数を使用すると、ランク 2x2、3x3、4x4 の平方行列を操作できます。特にグラフィカルな変換に役立ち、OpenGL と互換性があります。
行と列にはゼロベースのインデックスを使用します。たとえば、rs_matrix4x4 の最後の要素は (3, 3) にあります。
RenderScript は、列優先の行列と列ベースのベクトルを使用します。ベクトルの変換は、ベクトルを事後乗算することで行われます(例: rsMatrixMultiply() により提供される (matrix * vector))。
一度に 2 つの変換を行う変換行列を作成するには、2 つのソース行列を乗算します(最初の変換を正しい引数とします)。たとえば、変換 s1 の後に s2 が続く変換行列を作成するには、rsMatrixLoadMultiply(&combined, &s2, &s1) を呼び出します。これは s2 * (s1 * v)((s2 * s1) * v)から派生します。
変換行列を作成するための関数には、rsMatrixLoadTransformation と rsMatrixTransformation の 2 つがあります。前者のスタイルでは、単に最初の引数に変換行列を格納します。後者は、既存の変換行列を変更して、新しい変換が最初に行われるようにします。たとえば、すでにスケーリングが行われている行列に対して rsMatrixTranslate() を呼び出した場合、結果の行列をベクトルに適用したときに、まず翻訳が行われ、その後にスケーリングが行われます。
| 関数 | |
|---|---|
| rsExtractFrustumPlanes | 錐台平面の計算 |
| rsIsSphereInFrustum | 球が円錐面内にあるかどうかを確認します。 |
| rsMatrixGet | 1 つの要素を取得する |
| rsMatrixInverse | 行列を所定の位置で反転します。 |
| rsMatrixInverseTranspose | 所定の位置で行列を反転、転置する |
| rsMatrixLoad | マトリックスの読み込みまたはコピー |
| rsMatrixLoadFrustum | 錐台射影行列を読み込む |
| rsMatrixLoadIdentity | ID マトリックスの読み込み |
| rsMatrixLoadMultiply | 2 つの行列を乗算する |
| rsMatrixLoadOrtho | 正投影行列を読み込む |
| rsMatrixLoadPerspective | 視点射影行列を読み込む |
| rsMatrixLoadRotate | 回転マトリックスを読み込む |
| rsMatrixLoadScale | スケーリング マトリックスを読み込む |
| rsMatrixLoadTranslate | 変換マトリックスを読み込む |
| rsMatrixMultiply | 行列とベクトルまたは他の行列を乗算する |
| rsMatrixRotate | 変換行列に回転を適用する |
| rsMatrixScale | 変換行列にスケーリングを適用する |
| rsMatrixSet | 要素を 1 つ設定する |
| rsMatrixTranslate | 変換行列に平行移動を適用する |
| rsMatrixTranspose | 行列の転置 |
四元数関数
次の関数は四元数を処理します。
| 関数 | |
|---|---|
| rsQuaternionAdd | 2 つの四元数を足し算する |
| rsQuaternionConjugate | 四元数を共役する |
| rsQuaternionDot | 2 つの四元数のドット積 |
| rsQuaternionGetMatrixUnit | 四元数から回転行列を取得する |
| rsQuaternionLoadRotate | 回転四元数を作成する |
| rsQuaternionLoadRotateUnit | 任意の単位ベクトルに関する回転を表す四元数 |
| rsQuaternionMultiply | 四元数にスカラーまたは他の四元数を乗算する |
| rsQuaternionStandardize | 四元数を正規化する |
| rsQuaternionSet | 四元数を作成する |
| rsQuaternionSlerp | 2 つの四元数間の球面線形補間 |
アトミック更新関数
複数のスレッド間で共有される値を更新するには、以下の関数を使用します。 これにより、値がアトミックに更新されます。つまり、メモリの読み取り、更新、メモリ書き込みが正しい順序で実行されます。
これらの関数はアトミックでない同等の関数よりも低速であるため、同期が必要な場合にのみ使用してください。
RenderScript では、明示的に作成していなくても、コードが別のスレッドで実行される可能性があります。RenderScript ランタイムは、多くの場合、1 つのカーネルの実行を複数のスレッドに分割します。グローバルの更新はアトミック関数を使用して行う必要があります。可能であれば、完全に回避するようにアルゴリズムを変更します。
| 関数 | |
|---|---|
| rsAtomicAdd | スレッドセーフな追加 |
| rsAtomicAnd | スレッドセーフなビット演算と |
| rsAtomicCas | スレッドセーフな比較と設定 |
| rsAtomicDec | スレッドセーフなデクリメント |
| rsAtomicInc | スレッドセーフなインクリメント |
| rsAtomicMax | スレッドセーフな最大値 |
| rsAtomicMin | スレッドセーフな最小値 |
| rsAtomicOr | スレッドセーフなビット単位または |
| rsAtomicSub | スレッドセーフな減算 |
| rsAtomicXor | スレッドセーフなビット単位排他的論理和 |
時間関数と時間型
以下の関数を使用して、現在の時刻と現在のシステム アップ時刻を算出できます。これらの関数をカーネル内で呼び出すことはおすすめしません。
| 型 | |
|---|---|
| rs_time_t | 1970 年 1 月 1 日からの秒数 |
| rs_tm | 日付と時刻の構造 |
| 関数 | |
|---|---|
| rsGetDt | 最後の呼び出しからの経過時間 |
| rsLocaltime | 現地時間に変換する |
| rsTime | 1970 年 1 月 1 日からの秒数 |
| rsUptimeMillis | システムの稼働時間(ミリ秒) |
| rsUptimeNanos | システムの稼働時間(ナノ秒単位) |
割り当て作成関数
以下の関数を使用して、スクリプトから割り当てを作成できます。
これらの関数は、呼び出し可能な関数から直接、または間接的に呼び出すことができます。なんらかの制御フローパスにより、RenderScript カーネル関数からこれらの関数が呼び出されると、コンパイラ エラーが生成されます。
| 関数 | |
|---|---|
| rsCreateAllocation | 指定された型の rs_allocation オブジェクトを作成します。 |
| rsCreateElement | 指定されたデータ型の rs_element オブジェクトを作成します |
| rsCreatePixelElement | 指定されたデータ型とデータ型の rs_element オブジェクトを作成します |
| rsCreateType | 指定された要素とシェイプの属性を持つ rs_type オブジェクトを作成します。 |
| rsCreateVectorElement | 指定されたデータ型とベクトル幅の rs_element オブジェクトを作成します |
アロケーション データ アクセス関数
以下の関数を使用すると、割り当てを構成するセルを取得して設定できます。
- 個々のセルにアクセスするには、rsGetElementAt* 関数と rsSetElementAt 関数を使用します。
- rsAllocationCopy* 関数と rsAllocationV* 関数を使用して、複数のセルをコピーできます。
- サンプラーを介して値を取得するには、rsSample を使用します。
| 関数 | |
|---|---|
| rsAllocationCopy1DRange | 割り当て間で連続セルをコピーする |
| rsAllocationCopy2DRange | 割り当て間のセルの長方形領域をコピーする |
| rsAllocationVLoadX | スカラーの割り当てからベクトルを取得する |
| rsAllocationVStoreX | ベクトルをスカラーの割り当てに格納する |
| rsGetElementAt | 割り当てからセルを返す |
| rsGetElementAtYuv_uchar_U | YUV の割り当てから U コンポーネントを取得する |
| rsGetElementAtYuv_uchar_V | YUV の割り当ての V コンポーネントを取得する |
| rsGetElementAtYuv_uchar_Y | YUV の割り当ての Y コンポーネントを取得する |
| rsSample | テクスチャ割り当てから値をサンプリングする |
| rsSetElementAt | 割り当てのセルを設定する |
オブジェクト特性関数
以下の関数を使用して、Allocation、Element、または Sampler オブジェクトの特性をクエリできます。これらのオブジェクトは Java から作成されます。スクリプトから作成することはできません。
割り当て:
割り当ては、RenderScript カーネルとの間でデータを受け渡すために使用される主要な方法です。
ビットマップ、テクスチャ、任意のデータポイントなどを保存するために使用できるセルの構造化された集まりです。
このセルの集合には、多くの次元(X、Y、Z、Array0、Array1、Array2、Array3)、面(キューブマップ用)、詳細レベル(mipmap 用)があります。
割り当ての作成について詳しくは、android.renderscript.Allocation をご覧ください。
要素:
RenderScript では、「要素」という用語が、割り当てのセルの型情報とその型のインスタンス化の両方として、やや曖昧に使用されます。次に例を示します。
- rs_element は型仕様へのハンドルです。
- rsGetElementAt() のような関数では、「element」は型(割り当てのセル)のインスタンス化を意味します。
以下の関数を使用すると、型仕様の特性をクエリできます。
要素では、C にある単純なデータ型(整数、浮動小数点数、ブール値など)を指定できます。RenderScript オブジェクトに対するハンドルも指定できます。基本的な型のリストについては、rs_data_type をご覧ください。
要素では、基本型の固定サイズの(2、3、4 サイズの)ベクトル バージョンを指定できます。要素は複雑な要素にまとめることで、C 構造定義と同等のものを作成できます。
要素には kind を持つこともできます。kind は、ピクセルデータの解釈に使用されるセマンティック情報です。rs_data_kind をご覧ください。
共通要素の割り当てを作成する場合は、F32_2 などの多数の事前定義済み要素のいずれかを使用するだけで済みます。
複雑な要素を作成するには、Element.Builder Java クラスを使用します。
サンプラー:
サンプラー オブジェクトは、割り当てをカーネル内の構造として読み取る方法を定義します。android.renderscript.S をご覧ください。
| 関数 | |
|---|---|
| rsAllocationGetDimFaces | 複数の顔が含まれている |
| rsAllocationGetDimLOD | 詳細レベルの有無 |
| rsAllocationGetDimX | X ディメンションのサイズ |
| rsAllocationGetDimY | Y ディメンションのサイズ |
| rsAllocationGetDimZ | Z ディメンションのサイズ |
| rsAllocationGetElement | 割り当てのセルを記述するオブジェクトを取得する |
| rsClearObject | オブジェクトを解放する |
| rsElementGetBytesSize | 要素のサイズ |
| rsElementGetDataKind | 要素の種類 |
| rsElementGetDataType | 要素のデータ型 |
| rsElementGetSubElement | 複合要素のサブ要素 |
| rsElementGetSubElementArraySize | 複合要素のサブ要素の配列サイズ。 |
| rsElementGetSubElementCount | 下位要素の数 |
| rsElementGetSubElementName | サブ要素の名前 |
| rsElementGetSubElementNameLength | 下位要素の名前の長さ |
| rsElementGetSubElementOffsetBytes | インスタンス化されたサブ要素のオフセット |
| rsElementGetVectorSize | 要素のベクターサイズ |
| rsIsObject | 空のハンドルをチェックする |
| rsSamplerGetAnisotropy | サンプラーの異方性 |
| rsSamplerGetMagnification | サンプラーの拡大値 |
| rsSamplerGetMinification | サンプラー圧縮値 |
| rsSamplerGetWrapS | サンプラー ラップの S 値 |
| rsSamplerGetWrapT | サンプラーのラップの T 値 |
カーネル呼び出し関数とカーネル呼び出し型
rsForEach() 関数を使用して、スクリプトのルートカーネルを呼び出すことができます。
他の関数は、ディメンションや現在のインデックスなど、実行中のカーネルの呼び出しの特性を取得するために使用されます。これらの関数は、引数として rs_kernel_context を取ります。
| 型 | |
|---|---|
| rs_for_each_strategy_t | セルの処理順序の候補 |
| rs_kernel | カーネル関数に対するハンドル |
| rs_kernel_context | カーネル呼び出しコンテキストに対するハンドル |
| rs_script_call_t | セルの反復処理に関する情報 |
| 関数 | |
|---|---|
| rsForEach | カーネルを起動する |
| rsForEachInternal | (内部 API)現在のスクリプトで(スロット番号を指定して)カーネルを起動する |
| rsForEachWithOptions | オプションを指定してカーネルを起動する |
| rsGetArray0 | 指定されたカーネル コンテキストの Array0 ディメンションのインデックス |
| rsGetArray1 | 指定されたカーネル コンテキストの Array1 ディメンションのインデックス |
| rsGetArray2 | 指定されたカーネル コンテキストの Array2 ディメンションのインデックス |
| rsGetArray3 | 指定されたカーネル コンテキストの Array3 ディメンションのインデックス |
| rsGetDimArray0 | 指定されたカーネル コンテキストの Array0 ディメンションのサイズ |
| rsGetDimArray1 | 指定されたカーネル コンテキストの Array1 ディメンションのサイズ |
| rsGetDimArray2 | 指定されたカーネル コンテキストの Array2 ディメンションのサイズ |
| rsGetDimArray3 | 指定されたカーネル コンテキストの Array3 ディメンションのサイズ |
| rsGetDimHasFaces | 指定されたカーネル コンテキストに複数の顔が存在する |
| rsGetDimLod | 指定されたカーネル コンテキストの詳細レベル数 |
| rsGetDimX | 指定されたカーネル コンテキストの X ディメンションのサイズ |
| rsGetDimY | 指定されたカーネル コンテキストの Y ディメンションのサイズ |
| rsGetDimZ | 指定されたカーネル コンテキストの Z ディメンションのサイズ |
| rsGetFace | 指定されたカーネル コンテキストの顔の座標 |
| rsGetLod | 指定されたカーネル コンテキストの詳細レベル ディメンションのインデックス |
入出力関数
これらの関数は、以下の目的で使用します。
- Java クライアントに情報を送信する。
- 処理された割り当てを送信するか、処理する次の割り当てを受信します。
| 関数 | |
|---|---|
| rsAllocationIoReceive | キューから新しいコンテンツを受け取る |
| rsAllocationIoSend | 新しいコンテンツをキューに送信する |
| rsSendToClient | クライアントへのメッセージ送信 |
| rsSendToClientBlocking | クライアントにメッセージを送信して、 |
デバッグ関数
以下の関数は、アプリ開発で使用することを想定しています。配送用のアプリでは使用しないでください。
| 関数 | |
|---|---|
| rsDebug | メッセージと値をログに記録する |
グラフィック関数とグラフィック型
RenderScript のグラフィック サブシステムは、API レベル 23 で削除されました。