メインメニューを開く

差分

Metalのデータ型

131 バイト追加, 2022年6月9日 (木) 01:47
== スカラー型==
{| class="wikitable"
|+
! 型! 概要
|-
|bool
|-
|char
int8_t| rowspan="2" |符号付き8ビット整数|-|符号付き8ビット整数int8_t
|-
|unsigned char
| rowspan="3" |符号なし8ビット整数|-|uchar|-|uint8_t|符号なし8ビット整数
|-
|short
int16_t| rowspan="2" |符号付き16ビット整数|-|符号付き16ビット整数int16_t
|-
|unsigned short
| rowspan="3" |符号なし16ビット整数|-|ushort|-|uint16_t|符号なし16ビット整数
|-
|int
int32_t| rowspan="2" |符号付き32ビット整数|-|符号付き32ビット整数int32_t
|-
|unsigned int
| rowspan="3" |符号なし32ビット整数|-|uint|-|uint32_t|符号なし32ビット整数
|-
|long
int64_t| rowspan="2" |符号付き64ビット整数
Metal 2.2以降
|-
|int64_t
|-
|unsigned long
uint64_t| rowspan="2" |符号なし64ビット制す
Metal 2.2以降
|-
|uint64_t
|-
|half
|-
|size_t
|sizeof 演算子の結果を表す符号なし整数型。実態は符号なし64ビット整数。演算子の結果を表す符号なし整数型。実態は符号なし64ビット整数。
|-
|ptrdiff_t
|2つのポインタを引き算した結果の符号付き整数型。実態は符号付き64ビット整数。2つのポインタを引き算した結果の符号付き整数型。実態は符号付き64ビット整数。
|-
|void
|}
=== サフィックス === * f または F = float, 0.5f* h または H = half, 0.5h* u または U = uint, 2u* l または L = long, 2L
== ベクトル型 ==
スカラー型名の末尾に数字(ここでは'''n'''とする)を付けるとベクトル型になる。
'''n''' には 2, 3, 4のいづれかの数字が入る。
「float2」や「float3」といった感じだ。
[[HLSL]]などと同じだな。
* bool'''n'''
* char'''n'''
* short'''n'''
* int'''n'''
* long'''n'''
* uchar'''n'''
* ushort'''n'''
* uint'''n'''
* ulong'''n'''
* half'''n'''
* float'''n'''
*bool'''n'''*char'''n'''*short'''n'''*int'''n'''*long'''n'''*uchar'''n'''*ushort'''n'''*uint'''n'''*ulong'''n'''*half'''n'''*float'''n''' === ベクトル型のサイズは必ず2の乗数===
Metalのベクトル型は「型のサイズは必ず2の乗数」となっている。
たとえば、
 * int = 4バイト* int2 = 8バイト* int3 = '''16バイト''' (12バイトではない)* int4 = 16バイト
[[HLSL]]や[[GLSL]]で[[定数バッファー]]などの[[構造体]]を作る際は、その構造体のサイズを「8バイト単位」や「16バイト単位」にする必要があり、[[シェーダー]]の[[プログラミング]]の際にはその構造体のサイズを手計算で算出して、バイト数が足りない場合はダミーの変数を追加してサイズ調整が必要である。