「Metalのデータ型」の版間の差分
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) |
||
| (同じ利用者による、間の6版が非表示) | |||
| 223行目: | 223行目: | ||
複数のスカラー、1つ以上のベクトル、またはスカラーとベクトルの混合物からベクトルを構築する場合、ベクトルの成分は引数の成分から順番に構築されます。引数は左から右の順に消費される。各引数は、次の引数の成分が消費される前に、順番にそのすべての成分が消費されます。 | 複数のスカラー、1つ以上のベクトル、またはスカラーとベクトルの混合物からベクトルを構築する場合、ベクトルの成分は引数の成分から順番に構築されます。引数は左から右の順に消費される。各引数は、次の引数の成分が消費される前に、順番にそのすべての成分が消費されます。 | ||
== マトリックス型 == | |||
[[Metal]]では[[行列]]を表すマトリックス型をサポートしている。 | |||
halfおよびfloatの末尾に「'''n'''x'''m'''」と付けるとマトリックス型になる。 | |||
'''n'''と'''m'''の部分には2から4の数字が入る。 | |||
* half'''n'''x'''m''' | |||
* float'''n'''x'''m''' | |||
=== マトリックス成分へのアクセス === | |||
Metalでは基本的にC言語の多次元配列と同じでありインデックスは「ゼロ」から始まる。 | |||
プログラミング言語によっては「m11」などと「1始まり」のものもあるので移植の際には注意しよう。 | |||
<source lang="c"> | |||
float4x4 m; | |||
// 2列目の全要素(全行)に2.0fを設定する | |||
m[1] = float4(2.0f); | |||
// 1行目1列目に1.0fを設定する | |||
m[0][0] = 1.0f; | |||
</source> | |||
=== マトリックス型のコンストラクタ === | |||
; 引数が浮動点数型1個 | |||
浮動点数が1個だと | |||
<source lang=c> | |||
float4x4( val ); | |||
</source> | |||
こうなる。 | |||
<math> | |||
\begin{pmatrix} | |||
val & 0.0 & 0.0 & 0.0 \\ | |||
0.0 & val & 0.0 & 0.0 \\ | |||
0.0 & 0.0 & val & 0.0 \\ | |||
0.0 & 0.0 & 0.0 & val \\ | |||
\end{pmatrix} | |||
</math> | |||
; 引数が同じサイズのマトリックス型 | |||
同じサイズのマトリックス型だと複製が作られる。 | |||
<source lang=c> | |||
float3x4( float3x4 ); | |||
</source> | |||
== バッファー == | |||
Metalのバッファーとはいわゆるポインタである。 | |||
* device | |||
* constant | |||
* threadgroup | |||