vulkan弄ってみた

 OpenGLとかDirectXとか2000年代半ば頃までは弄っていて、なにかの時に簡単なサンプル作ったりくらいはでっち上げる感じだったけど、そもそもsmoothbindとかshaderとか分離され始めた頃からリアルタイムエンジンが複雑化してきて、そういうのを追うのが面倒になってしまい、今ではすっかりご無沙汰です。

 隣の席の御大がめっちゃシェーダー職人はじめました。って感じで、凄いな~と思ったので、この機会にすこしvulkan弄ってみようかな…と思ったり。
 去年の7月くらいにGTX950導入したのに全然活用してない…というのもあるし。(というか、実は買った割に使わないのでQuadroFX370に戻してたけど、vulkan対象外っぽいのでGTX950入れ直した)

 以下、Windowsにおける導入までの流れ。

導入
LunarGサイトに説明ページを見つけた。
あとVulkan Tutorialなるサイトも。

 まずvulkan対応のGPUドライバと、vulkanSDKを入れる。

 SDKには、demosとsamplesという2つの導入説明用のフォルダがあるけど、samplesを利用するには cmakeと python3, VisualStudio(2015以降)が必要になる。
 VisualStudioは、仕事で使うのでなければCommunity版が利用できるので、これを使った。
 cmakeは公式からDLしてインストール。パスは環境変数に設定しておくか、サンプルのバッチ(Samples/build_windows_samples.bat)でパスを通しておく。
 Python3の方は、同じように公式からDLしてパスを通す方法と、VisualStudioのPython環境インストールの2通りの方法がある。(VisualStudioでPython環境を入れみたら、Python3の環境設定不要でサンプルのバッチを実行可能だった。)

 上記の準備が出来たら、サンプルのバッチを実行する。
 それなりに処理に時間が掛かるので、お湯でも沸かしてお茶でも飲むとか、洗濯でもして待っていればそのうちに終わる。(お茶飲みながら洗濯していたら、気づいた時には終わっていた)

 バッチ実行が終わったら、Samples/build/VULKAN_SAMPLES.sln でソリューションを開くと、いろいろサンプルを試すことが出来る。

 当初、QuadroFX370で試したら、Samples/API-Samples/01-init_instanceでは”cannot find a compatible Vulkan ICD”とか出るし、02-enumerate_devicesでは、assertが上がって初期化がまともに成功しない…という結果に。(対応環境ではないから…)

 GTX950に入れ替えて、ようやく動作。
 でも、サポート範囲はvulkanAPI1.0のみ。最新はAPI1.1なので、vulkanの機能をフルに活かそうとすると結構高いスペックが必要そうだ。

基本のサンプルでは足りない場合

 SDKのDemos, Samplesの方は、本当に基本実装のサンプルなので、知識が足りない場合はいろいろ参考を探した方がいい。
 NVIDIAはスペックデモ用のサンプルをNVIDIA GameWorks Vulkan and OpenGL Samplesで公開していた。

 あと、英語だけどまとめサイト的なものを見つけた。

 まずはこの辺で、出来ることを探ってみるといいかもしれない。

FBX SDK

 これ少し調べる機会があった。
 いきなり何もなしで始めるより、こういうのを利用して最終的に自前のフォーマットを構築するのが良さそうね。