概要
スカラー:
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 ビット符号なし整数 |
型
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 ビット符号付き整数
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 行列
rs_matrix3x3 : 32 ビット浮動小数点数の 3x3 行列
rs_matrix4x4 : 32 ビット浮動小数点数の 4x4 行列
rs_quaternion : 四元数
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 ビット フィールドにパックされます。