metal fluid simulation

24
Metal で流体シミュレーション

Upload: atsushi-yoshimura

Post on 18-Nov-2014

469 views

Category:

Technology


1 download

DESCRIPTION

Metal Fluid Simulation iOS ブログでも解説しています http://wowdev.jp/?p=1380 Qiitaはこちら http://qiita.com/Ushio@github/items/3c206dd1e26195b7627f

TRANSCRIPT

Page 1: Metal Fluid Simulation

Metalで流体シミュレーション

Page 2: Metal Fluid Simulation

自己紹介

吉村 篤 !

所属:WOW Twitter : @ushiostarfish Qiita : http://qiita.com/Ushio@github

Page 3: Metal Fluid Simulation

ナビエ-ストークス方程式

※粘性率一定非圧縮

Page 4: Metal Fluid Simulation

ナビエ-ストークス方程式

Page 5: Metal Fluid Simulation

なので

Page 6: Metal Fluid Simulation

もっと単純に考えよう

Page 7: Metal Fluid Simulation

↓ 水

Page 8: Metal Fluid Simulation

格子状に分割

Page 9: Metal Fluid Simulation

格子状に分割

計算する場合 特定の1マスと 周囲の8マスに着目

Page 10: Metal Fluid Simulation

①流体の量②速度

①流体の量②速度

①流体の量②速度

①流体の量②速度

①流体の量②速度

①流体の量②速度

①流体の量②速度

①流体の量②速度

①流体の量②速度

それぞれ流体の量と、速度を持つ

Page 11: Metal Fluid Simulation

流体の量は速度によって変化する

速度 遅速度 早

水は増える!

【移流】

Page 12: Metal Fluid Simulation

流体の量は速度によって変化する

速度 遅 速度 早

水は減る!

【移流】

Page 13: Metal Fluid Simulation

流体の量によって圧力が発生

右向きの力!

流体 少流体 多

【圧力】

Page 14: Metal Fluid Simulation

流体の量によって圧力が発生

左向きの力!

流体 少流体 多

【圧力】

Page 15: Metal Fluid Simulation

近くの流体は隣に影響を受ける【粘性】

実装上はガウシアンブラー

Page 16: Metal Fluid Simulation

処理フロー

移流

圧力

外力

減衰

粘性

流体同士以外の力

摩擦等

Page 17: Metal Fluid Simulation

Metal

Page 18: Metal Fluid Simulation

Metalだいじなポイント !

①三角形を効率よく描画できる ②並列計算を効率よくやる ③1と2がとってもシームレス

A7チップに最適化してるよ!

Page 19: Metal Fluid Simulation

Metalのデモは何故こうだったか?

花びら並列計算シミュレーション

水面並列計算シミュレーション

Page 20: Metal Fluid Simulation

蝶それぞれ並列計算シミュレーション

水面並列計算シミュレーション

Page 21: Metal Fluid Simulation

どうやって使うの?

Metal API シェーダー

・C++11 ・Metal APIを通じて使う

・Swift or Obj-Cから呼ぶ ・OpenGLより扱い易い ・超低レイヤー ・低オーバーヘッド

Page 22: Metal Fluid Simulation

描画ループ

テクスチャ計算シェーダー

更新処理

描画シェーダー CAMetalLayer

描画処理

今回の基本フロー

Page 23: Metal Fluid Simulation

DEMO

Page 24: Metal Fluid Simulation

細かいところはソースを参照!

https://github.com/Ushio/MetalFuildDemo

A7チップじゃないと動かないよ!