Apple Engine

Apple, iPhone, iOS, その周辺のことについて

SIMD

Swift 5.1 で追加された SIMD の機能

忘れていたのでまとめてみる。 Swift でビルトイン実装されている SMID の機能と Swift Standard Library で SMID を引数として持つ関数が追加された。 SIMD Vector Types Swift Standard Library Functions Swift-Evolution - SIMD Additions (元ネタ) 追加…

Swift 5 で導入された SIMD Vector Types

単体の simd や Accelerate フレームワークの simd ライブラリなどの一部が Swift 5 で使用できる様になった。 ちなみにクォータニオンはなく、関数も一部しかないので、 あくまでもデータを保存する型の様なものだと思ってもらえれば良い。 SIMD とは 以前…

ARKit や SceneKit で使用している simd について - クォータニオンでの関数編 その2 -

今回はクォータニオンで使用する線形補間の関数について。 基本的には球状での回転の補間となる。 用意されている関数は以下のもの。 simd_slerp simd_slerp_longest simd_spline simd_bezier ちなみに線形補間に関しては iOS でサンプルアプリがあるのでそ…

ARKit や SceneKit で使用している simd について - クォータニオンでの関数編 その1 -

今回はクォータニオンで使用する関数について。 線形補間関連の関数はまたいずれ。 演算子と関数について書くが、基本的にはプロパティと関数が対になっている。 演算子 等価演算子と四則演算が可能。 +, - に関しては値が加算、減算されるため、正規化しな…

ARKit や SceneKit で使用している simd について - クォータニオン編 -

今回はクォータニオンについて。 確かこの Blog で SCNQuaternion もちゃんと紹介していないので、まずはクォータニオンについてのご説明。 クォータニオンのざっくり説明 クォータニオンは四元数と呼ばれ、スカラー(実数)部分と3つの虚数部分をまとめたベ…

ARKit や SceneKit で使用している simd について - 行列での関数編 -

今回は行列で用意されている関数について 用意されている関数 以下のものが用意されている。 simd_add() simd_sub() simd_mul() simd_equal() simd_almost_equal_elements() simd_almost_equal_elements_relative() simd_linear_combination() simd_determin…

ARKit や SceneKit で使用している simd について - 行列型編 -

今回は 行列型と初期化について。 ARKit や SceneKit で主に使用する float4x4 を説明する。 double4x4 は float4x4 と上限値以外は同じなので 割愛。 float4x4 と double4x4、クオータニオン以外では、以下の行列が用意されており、double や float、行列の…

ARKit や SceneKit で使用している simd について - 関数編 -

今回は simd の演算用の関数についての説明。 simd のライブラリはベクトル内の各要素対して1つの命令で各要素に適応させることができる。 以前に紹介した通り、+演算子を使用すると、2つのベクトルの要素ごとに合計を簡単に計算することができる。 let f3_1…

ARKit や SceneKit で使用している simd について - 型の初期化と演算子編 -

前回に引き続き simd の説明で、今回は simd 型の初期化と演算子に付いて。 行列型に関して他の記事で紹介する。 今回は ARKit や SceneKit で主に使用する以下のものの説明。 double は float と上限値以外は同じなので割愛。 float3 float4 直接使用するこ…

ARKit や SceneKit で使用している simd について - 概要編 -

ARKit や SceneKit で使用している Accelerate フレームワークの simd ライブラリについて書いてみる。 元々は Accelerate フレームワークで vImage、vDSP や BLAS、LAPACK などを使用する際に、ハードウェアに近い部分での計算を行うために追加されたものだ…