「Metalのデータ型」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | ==スカラー型== | + | == スカラー型== |
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
− | !型 | + | ! 型 |
− | !概要 | + | ! 概要 |
|- | |- | ||
|bool | |bool | ||
9行目: | 9行目: | ||
|- | |- | ||
|char | |char | ||
− | + | int8_t | |
− | + | |符号付き8ビット整数 | |
− | |||
|- | |- | ||
|unsigned char | |unsigned char | ||
− | + | uchar | |
− | + | ||
− | + | uint8_t | |
− | | | + | |符号なし8ビット整数 |
− | |||
|- | |- | ||
|short | |short | ||
− | + | int16_t | |
− | + | |符号付き16ビット整数 | |
− | |||
|- | |- | ||
|unsigned short | |unsigned short | ||
− | + | ushort | |
− | + | ||
− | + | uint16_t | |
− | | | + | |符号なし16ビット整数 |
− | |||
|- | |- | ||
|int | |int | ||
− | + | int32_t | |
− | + | |符号付き32ビット整数 | |
− | |||
|- | |- | ||
|unsigned int | |unsigned int | ||
− | + | uint | |
− | + | ||
− | + | uint32_t | |
− | | | + | |符号なし32ビット整数 |
− | |||
|- | |- | ||
|long | |long | ||
− | + | int64_t | |
+ | |符号付き64ビット整数 | ||
Metal 2.2以降 | Metal 2.2以降 | ||
− | |||
− | |||
|- | |- | ||
|unsigned long | |unsigned long | ||
− | + | uint64_t | |
+ | |符号なし64ビット制す | ||
Metal 2.2以降 | Metal 2.2以降 | ||
− | |||
− | |||
|- | |- | ||
|half | |half | ||
65行目: | 57行目: | ||
|- | |- | ||
|size_t | |size_t | ||
− | |sizeof | + | |sizeof 演算子の結果を表す符号なし整数型。実態は符号なし64ビット整数。 |
− | |||
|- | |- | ||
|ptrdiff_t | |ptrdiff_t | ||
− | | | + | |2つのポインタを引き算した結果の符号付き整数型。実態は符号付き64ビット整数。 |
− | |||
|- | |- | ||
|void | |void | ||
76行目: | 66行目: | ||
|} | |} | ||
− | ===サフィックス === | + | === サフィックス === |
− | + | * f または F = float, 0.5f | |
− | *f または F = float, 0.5f | + | * h または H = half, 0.5h |
− | *h または H = half, 0.5h | + | * u または U = uint, 2u |
− | *u または U = uint, 2u | + | * l または L = long, 2L |
− | *l または L = long, 2L | ||
− | ==ベクトル型== | + | == ベクトル型 == |
スカラー型名の末尾に数字(ここでは'''n'''とする)を付けるとベクトル型になる。 | スカラー型名の末尾に数字(ここでは'''n'''とする)を付けるとベクトル型になる。 | ||
'''n''' には 2, 3, 4のいづれかの数字が入る。 | '''n''' には 2, 3, 4のいづれかの数字が入る。 | ||
「float2」や「float3」といった感じだ。 | 「float2」や「float3」といった感じだ。 | ||
[[HLSL]]などと同じだな。 | [[HLSL]]などと同じだな。 | ||
+ | * bool'''n''' | ||
+ | * char'''n''' | ||
+ | * short'''n''' | ||
+ | * int'''n''' | ||
+ | * long'''n''' | ||
+ | * uchar'''n''' | ||
+ | * ushort'''n''' | ||
+ | * uint'''n''' | ||
+ | * ulong'''n''' | ||
+ | * half'''n''' | ||
+ | * float'''n''' | ||
− | + | === ベクトル型のサイズは必ず2の乗数=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ===ベクトル型のサイズは必ず2の乗数=== | ||
Metalのベクトル型は「型のサイズは必ず2の乗数」となっている。 | Metalのベクトル型は「型のサイズは必ず2の乗数」となっている。 | ||
たとえば、 | たとえば、 | ||
− | + | * int = 4バイト | |
− | *int = 4バイト | + | * int2 = 8バイト |
− | *int2 = 8バイト | + | * int3 = '''16バイト''' (12バイトではない) |
− | *int3 = '''16バイト''' (12バイトではない) | + | * int4 = 16バイト |
− | *int4 = 16バイト | ||
[[HLSL]]や[[GLSL]]で[[定数バッファー]]などの[[構造体]]を作る際は、その構造体のサイズを[[GPU]]が扱いやすいよう「8バイト単位」や「16バイト単位」にする必要があり、[[シェーダー]]の[[プログラミング]]の際にはその構造体のサイズを手計算で算出して、バイト数が足りない場合はダミーの変数を追加してサイズ調整が必要である。 | [[HLSL]]や[[GLSL]]で[[定数バッファー]]などの[[構造体]]を作る際は、その構造体のサイズを[[GPU]]が扱いやすいよう「8バイト単位」や「16バイト単位」にする必要があり、[[シェーダー]]の[[プログラミング]]の際にはその構造体のサイズを手計算で算出して、バイト数が足りない場合はダミーの変数を追加してサイズ調整が必要である。 |