狠狠撸

狠狠撸Share a Scribd company logo
AndroidでVulkan事始め
株式会社Aiming
藤井 章暢
アジェンダ
? 自己紹介
? Vulkanとは?
? Vulkanの特徴
? Androidでこと始めるには
? Vulkanの対応状況
? まとめ
自己紹介
? 名前:
– 藤井 章暢
– ふじい あきのぶ
? 職業:
– エンジニア
? 好きなもの:
– ゲーム、犬、きれいな絵
? その他:
– Facebookで色々つぶやいています
Vulkanとは?
What is Vulkan?
Vulkanとは?
? 「Open GL」などのAPI策定を行っている
「Khronos Group」が発表した
グラフィックスAPI
? Windows、Linux、Androidに対応
– Macは対応してません???
– Metalを使えということですね、わかります
Vulkanとは?
? 2016年2月16日
LunarG社から Windows、Linuxの
Version1.0 SDKをリリース
– 1ヶ月に2~3回アップデートしている
? Android NDK, Revision 12から
正式サポート開始(2016年6月)
? API Level 24(Android 7.0)以上必要
– 大抵の端末はまだ対応していない
Vulkanの特徴(メリット編)
Features of Vulkan
Low Level API
? ハードウェアに近いAPI
? コマンド発行のコストが低い
マルチスレッド対応
? マルチスレッド前提のAPI設計なので
CPU処理を分散させやすい
OpenGLは????
? マルチスレッド向き設計ではなかった
ので、1コアが頑張らなければならない
ことがざらにあった。
Vulkanは????
? 各スレッドがCommandBufferに
描画コマンドを積み込んで、
CommandQueueに積み込めば分散可能
SPIR-Vに則ったシェーダ仕様
? VulkanはSPIR-Vという中間言語に
則った仕様でシェーダが動いている
何がメリット?
? 決まったフォーマットがあるので
事前にシェーダをコンパイルしておける
– OpenGLはランタイムでコンパイルする仕様
なので、無駄なオーバーヘッドがかかってた
? SPIR-Vのフォーマットさえ守っていれば
コンパイラに流し込んで動かせる
何がメリット?
? KhronosGroup/glslang
– https://github.com/KhronosGroup/glslang
? SPIR-Vフォーマットで出力できれば
元の言語はなんでもいい
? その気になれば
自分の好きな言語でシェーダーが書ける
Vulkanの特徴(デメリット編)
Features of Vulkan
ざっくりとした違い
? Khronos Vulkanがリリースされたようなのでメモ
? http://qiita.com/eaglesakura/items/6ac27f2157fb18a98531
移植には向かない
? Vulkanに載せ替えたからと言って
速くなるわけではない
– CPU処理を速くするものなので
描画自体が速くなるわけではない
– 余計なオーバーヘッドを下げるには
設計から見直す必要がある
きっちり設計した
レンダラーシステムが必要
? すべての描画設定をプログラムで
制御する必要がある
– OpenGLは途中でブレンドステートや設定を
変更するのは容易
– 対してVulkanは諸々の設定がまとまりなので
ちょっとだけ変更がすごく面倒
自前で管理しないといけない
ものが非常に多い
? ドライバがやってくれていたものを自前で管理する必要がある
– グラフィックメモリ、アロケータ、Etc…
結局どういう人向け?
? 描画処理でかかるオーバーヘッドを
減らしてCPU側に処理時間をかけたい人
– CPU側で頑張る画像処理アプリなど
結局どういう人向け?
? 最新技術を取り入れたい人
– いち早く取り込んで新しい技術の検証に
使いたい場合は自分で取り込むのが最善
? 自社エンジンや自社フレームワークに
組み込みたい人
– 既存のエンジンやフレームワークの対応を
待つのはどうしても時間がかかる
Androidでこと始めるには
Getting Start with Android
Androidでこと始めるには
? まずは公式のサンプルを動かそう
– googlesamples/vulkan-basic-samples
– https://github.com/googlesamples/vulkan-basic-samples
? 必要環境:
– Android Studio 2.2.2以上
– Android SDK API Level 24以上
– Android NDK Revision 12以上
Androidでこと始めるには
? SaschaWillems/Vulkan
– https://github.com/SaschaWillems/Vulkan
– 超優秀なサンプル
– Vulkanの対応する全プラットフォームの
サンプルがあります
– 一部フレームワーク化されているので
ライブラリ作成の参考にもなります
Androidじゃないけど???
? akinobufujii/VulkanSamples
– https://github.com/akinobufujii/VulkanSamples
? 藤井が作ったWindows版のサンプルです
? みんな大好き、男気一本ソース
– 汚くてすみません???(??ω:;.:...
? 煮るなり焼くなり好きにしてください
– Android版も公開予定!(予定は未定)
Vulkanの対応状況
Correspondence situation of "Vulkan"
Unity
? Unity5.6からVulkan APIをサポート
– 記事によるとレンダリングパフォーマンスが
最大60%向上したらしい
Unreal Engine 4
? GithubにVulkanに対応した
ソースコードを公開中
– Unreal Engine 4のアカウントと
Githubのアカウントを紐付けないと
ソースコードは見れない
? YouTubeでデモを公開中
– https://www.youtube.com/watch?v=FnKu7MLB7vQ
– Galaxy S7上でのデモ
Cocos2d-x
まとめ
Summary
まとめ
? スマホにも低レベルのレンダリングAPIが
用意されてきた
– ただし、実用化されるにはまだ掛かりそう
? 有名なエンジンやフレームワークも
対応を見せ始めている
? 今のうちに触っておけば、
実用化されるときに困らないかも
知れない
– ただし敷居は高い、めっちゃ高い
ありがとうございました!

More Related Content

础苍诲谤辞颈诲で惫耻濒办补苍事始め