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 を付加して宣言します。 (例: float4int3double2ulong4)。

ベクター リテラルを作成するには、ベクター型を使用し、次に中かっこで囲まれた値(例: (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.yzmyVar.gbmyVar.s12myVar.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_matrix2x2rs_matrix3x3rs_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 ビット符号なし整数

char2 : 2 つの 8 ビット符号付き整数

次の typedef: char __attribute__((ext_vector_type(2)))

2 文字のベクトル。これら 2 つの文字は、16 ビット アライメントで単一の 16 ビット フィールドにパックされます。

char3 : 3 つの 8 ビット符号付き整数

次の typedef: char __attribute__((ext_vector_type(3)))

3 文字のベクトル。これら 3 つの文字は、32 ビット アライメントで単一の 32 ビット フィールドにパックされます。

char4 : 4 つの 8 ビット符号付き整数

次の typedef: char __attribute__((ext_vector_type(4)))

4 文字のベクトル。これら 4 つの文字は、32 ビット アライメントで単一の 32 ビット フィールドにパックされます。

double2 : 2 つの 64 ビット浮動小数点数

次の typedef: double __attribute__((ext_vector_type(2)))

2 つの倍精度浮動小数点のベクトル。これら 2 つの倍精度フィールドは、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

double3 : 3 つの 64 ビット浮動小数点数

次の typedef: double __attribute__((ext_vector_type(3)))

3 つの倍精度浮動小数点のベクトル。これら 3 つの倍精度フィールドは、256 ビット アライメントで単一の 256 ビット フィールドにパックされます。

double4 : 4 つの 64 ビット浮動小数点数

次の typedef: double __attribute__((ext_vector_type(4)))

4 つの倍精度浮動小数点のベクトル。これら 4 つの倍精度フィールドは、256 ビット アライメントで単一の 256 ビット フィールドにパックされます。

float2 : 2 個の 32 ビット浮動小数点数

次の typedef: float __attribute__((ext_vector_type(2)))

2 つの浮動小数点数のベクトル。これら 2 つの浮動小数点数は、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

2 つの浮動小数点数のベクトル。これら 2 つの浮動小数点数は、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

float3 : 3 個の 32 ビット浮動小数点数

次の typedef: float __attribute__((ext_vector_type(3)))

3 つの浮動小数点数のベクトル。これらの 3 つの浮動小数点数は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

float4 : 4 個の 32 ビット浮動小数点数

次の typedef: float __attribute__((ext_vector_type(4)))

4 つの浮動小数点数型のベクトル。これらの 4 つの浮動小数点数は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

half : 16 ビット浮動小数点値

typedef: __fp16 API レベル 23 で追加

16 ビット浮動小数点値。

half2 : 2 つの 16 ビット浮動小数点数

次の typedef: half __attribute__((ext_vector_type(2))) API レベル 23 で追加

ハーフ浮動小数点型のベクトル バージョン。2 つのハーフフィールドを 32 ビット アライメントで単一の 32 ビットフィールドにパックします。

half3 : 3 つの 16 ビット浮動小数点数

次の typedef: half __attribute__((ext_vector_type(3))) API レベル 23 で追加

ハーフ浮動小数点型のベクトル バージョン。3 つのハーフ フィールドが、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

half4 : 4 つの 16 ビット浮動小数点数

次の typedef: half __attribute__((ext_vector_type(4))) API レベル 23 で追加

ハーフ浮動小数点型のベクトル バージョン。4 つのハーフ フィールドが、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

int16_t : 16 ビット符号付き整数

short の typedef です。

16 ビット符号付き整数型。

int2 : 2 つの 32 ビット符号付き整数

次の typedef: int __attribute__((ext_vector_type(2)))

2 つの整数のベクトル。これら 2 つの整数は、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

int3 : 3 つの 32 ビット符号付き整数

次の typedef: int __attribute__((ext_vector_type(3)))

3 つの整数のベクトル。これら 3 つの整数は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

int32_t : 32 ビット符号付き整数

typedef: int

32 ビット符号付き整数型。

int4 : 4 つの 32 ビット符号付き整数

次の typedef: int __attribute__((ext_vector_type(4)))

4 つの整数のベクトル。これら 2 つの 4 は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

int64_t : 64 ビット符号付き整数

typedef: long long API レベル 21 以降から削除されました。

long 型の typedef です。API レベル 21 で追加されました。

64 ビット符号付き整数型。

int8_t : 8 ビット符号付き整数

型定義: char

8 ビット符号付き整数型。

long2 : 2 つの 64 ビット符号付き整数

次の typedef: long __attribute__((ext_vector_type(2)))

2 つの long 型のベクトル。これら 2 つの long は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

long3 : 3 つの 64 ビット符号付き整数

次の typedef: long __attribute__((ext_vector_type(3)))

3 つの long 型のベクトル。これら 3 つの long は、256 ビット アライメントで単一の 256 ビット フィールドにパックされます。

long4 : 4 つの 64 ビット符号付き整数

次の typedef: long __attribute__((ext_vector_type(4)))

4 つの long 型のベクトル。これら 4 つの long は、256 ビット アライメントで単一の 256 ビット フィールドにパックされます。

rs_matrix2x2 : 32 ビット浮動小数点数の 2x2 行列

次のフィールドを持つ構造:     

浮動小数点数 m[4]

浮動小数点数の 2x2 の正方行列。エントリは、ロケーション [row*2 + col] の配列に保存されます。

行列関数をご覧ください。

rs_matrix3x3 : 32 ビット浮動小数点数の 3x3 行列

次のフィールドを持つ構造:     

浮動小数点数 m[9]

3x3 の浮動小数点数の正方行列。エントリは、ロケーション [row*3 + col] の配列に保存されます。

行列関数をご覧ください。

rs_matrix4x4 : 32 ビット浮動小数点数の 4x4 行列

次のフィールドを持つ構造:     

浮動小数点数 m[16]

浮動小数点数の 4x4 の正方行列。エントリは、ロケーション [row*4 + col] の配列に保存されます。

行列関数をご覧ください。

rs_quaternion : 四元数

float4 の typedef。

四元数を表す 4 x 4 の浮動小数点数の正方形の行列。

四元数関数をご覧ください。

short2 : 2 つの 16 ビット符号付き整数

次の typedef: short __attribute__((ext_vector_type(2)))

2 つのショート動画のベクトル。これら 2 つのショート動画は、32 ビット アライメントで単一の 32 ビットフィールドにパックされます。

short3 : 3 つの 16 ビット符号付き整数

次の typedef: short __attribute__((ext_vector_type(3)))

3 つのショート動画のベクトル。これら 3 つの短いフィールドは、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

short4 : 4 つの 16 ビット符号付き整数

次の typedef: short __attribute__((ext_vector_type(4)))

4 つのショート動画のベクトル。これら 4 つの短いフィールドは、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

size_t : 符号なしのサイズタイプ

typedef: uint64_t 64 ビットのコンパイル時。

typedef: uint32_t 32 ビットをコンパイルする場合。

符号なしのサイズタイプ。ビット数はコンパイル フラグによって異なります。

ssize_t : 署名付きサイズタイプ

typedef: int64_t 64 ビットをコンパイルする場合。

typedef: int32_t 32 ビットをコンパイルする場合。

署名付きサイズタイプ。ビット数はコンパイル フラグによって異なります。

uchar : 8 ビット符号なし整数

typedef: uint8_t

8 ビット符号なし整数型。

uchar2 : 2 つの 8 ビット符号なし整数

次の typedef: uchar __attribute__((ext_vector_type(2)))

2 つの uchar のベクトル。これら 2 つの uchar フィールドが、16 ビット アライメントで単一の 16 ビット フィールドにパックされています。

uchar3 : 3 つの 8 ビット符号なし整数

型定義: uchar __attribute__((ext_vector_type(3)))

3 つの uchar のベクトル。これら 3 つの uchar フィールドが、32 ビット アライメントで単一の 32 ビット フィールドにパックされます。

uchar4 : 4 つの 8 ビット符号なし整数

型定義: uchar __attribute__((ext_vector_type(4)))

4 つの uchar のベクトル。これら 4 つの uchar フィールドが、32 ビット アライメントで単一の 32 ビット フィールドにパックされます。

uint : 32 ビット符号なし整数

typedef: uint32_t

32 ビット符号なし整数型。

uint16_t : 16 ビット符号なし整数

次の typedef: unsigned short

16 ビット符号なし整数型。

uint2 : 2 つの 32 ビット符号なし整数

型定義: uint __attribute__((ext_vector_type(2)))

2 つの uint のベクトル。これら 2 つの uint は、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

uint3 : 3 つの 32 ビット符号なし整数

型定義: uint __attribute__((ext_vector_type(3)))

3 つの uint のベクトル。これら 3 つの uint は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

uint32_t : 32 ビット符号なし整数

次の typedef: unsigned int

32 ビット符号なし整数型。

uint4 : 4 つの 32 ビット符号なし整数

typedef: uint __attribute__((ext_vector_type(4)))

4 つの uint のベクトル。これら 4 つの uint は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

uint64_t : 64 ビット符号なし整数

typedef: unsigned long long 型。API レベル 21 以降から削除されました。

次の typedef: unsigned long API レベル 21 で追加

64 ビット符号なし整数型。

uint8_t : 8 ビット符号なし整数

次の typedef: unsigned char

8 ビット符号なし整数型。

ulong : 64 ビット符号なし整数

typedef: uint64_t

64 ビット符号なし整数型。

ulong2 : 2 つの 64 ビット符号なし整数

型定義: ulong __attribute__((ext_vector_type(2)))

2 つの ulong のベクトル。これら 2 つの ulong は、128 ビット アライメントで単一の 128 ビット フィールドにパックされます。

ulong3 : 3 つの 64 ビット符号なし整数

型定義: ulong __attribute__((ext_vector_type(3)))

3 つの ulong のベクトル。これら 3 つの ulong フィールドが、256 ビット アライメントで単一の 256 ビット フィールドにパックされます。

ulong4 : 4 つの 64 ビット符号なし整数

型定義: ulong __attribute__((ext_vector_type(4)))

4 つのウロンのベクトル。これら 4 つの ulong フィールドが、256 ビット アライメントで単一の 256 ビット フィールドにパックされます。

ushort : 16 ビット符号なし整数

typedef: uint16_t

16 ビット符号なし整数型。

ushort2 : 2 つの 16 ビット符号なし整数

ushort __attribute__((ext_vector_type(2))) の typedef です。

2 つの ushorts のベクトル。これら 2 つの ushort フィールドは、32 ビット アライメントで単一の 32 ビット フィールドにパックされます。

ushort3 : 3 つの 16 ビット符号なし整数

ushort __attribute__((ext_vector_type(3))) の typedef です。

3 つの ushorts のベクトル。これら 3 つの ushort フィールドは、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。

ushort4 : 4 つの 16 ビット符号なし整数

ushort __attribute__((ext_vector_type(4))) の typedef です。

4 つの ushorts のベクトル。これら 4 つの ushort フィールドは、64 ビット アライメントで単一の 64 ビット フィールドにパックされます。