Vulkanほんと入門!
はじめに
3D APIは複数あります
OpenGL系
OpenGL、OpenGLES、WebGL等 色々と出ているがどれもがクロスプラットフォーム 現状 Windows、Linux、Mac、Android、iOS、Web が動くのはこれしかない コンシュマーゲーム機でも採用されている 現在 WebGL1.0(GLES2.0)が主流だが、WebGL2.0(GLES3.0)も 動くブラウザが増えている
非常に簡単にコーディング出来るし、各種ラッパーライブラリもあり便利な反面 APIが高レイヤーすぎてパフォーマンスに問題がある 今後は速度を劇的に改善したVulkanへ移行されていくと思われる
その為、私は選択肢から外した
DirectX
Windows OS上で動くグラフィックAPI 現在は バージョン12まで出ている 非常に低レイヤーで最も速度が速いし さすがMicrosoft様、ライブラリも速度のわりに使いやすい またC++でラップされている。当然すべてスマートポインタ(COMポインタ)になっており メモリ開放も比較的容易 問題点は Windowsでしか動かない事
Mantle API
AMDの提唱した低レイヤーAPI 速度はかなり高速らしいが、普及率で下火になり Vulkanへと引き継がれる
Metal API
最初AppleはVulkanプロジェクトに入っていたが、Appleが脱退し 独自のAPIを作る そのため Metal APIは Apple製品でしか使えない Vulkanから分裂しただけあって、Vulkanとかなり似ている
Vulkan API
クロノスグループにより、OpenGLの後継APIとして標準化される MetalAPIを基本にした高速APIである Windows、Linux、Androidで動く。 また Webで動く WebVulkanも開発されているらしい??
Apple製品以外はすべて対応していて、OpenGLとは比べ物にならない速度である DirectX12よりほんの少し遅いらしいが 誤差範囲
ということで、これからVulkanを勉強しようとおもう
環境構築
まず 私の環境は RazerBladeというノートPC ビデオは GeForce1060 Windows10である WindowsかLinuxで、Kepler以降のGPUが必要だ。 以前はGPUの乗ってないWindowsとMacbookProしか持っておらず開発出来なかった RazerBladeを手に入れた今は 誰も邪魔するものはいない!
NVidiaより Vulkanドライバをインストール Vulkan Driver Support | NVIDIA Developer
Valveが開発協力した?という LunarG SDKを使う。私の知る限りこのSDKしか存在しない https://vulkan.lunarg.com/
サンプルがいっぱいついているが、実行するためにはCMakeなどが必要 VisualStudioさえインストールされてあれば Demos以下は実行可能である CubeにLunarGと書かれたテクスチャがはられたデモが表示されるはずだ
プロジェクトTemplate作成
VisualStudioのテンプレートも用意されている プロジェクト新規作成時にVulkanのパスの通ったプロジェクトを作成できる 便利なのでぜひ行っておきたい
SDKPATH/Templates/Visual Studio 201x にあるZIPファイルを ドキュメント\Visual Studio 201x\Templates\ProjectTemplates\Visual C++ Project に全部コピーしてVisualStudioを立ち上げなおすと New Projectを作った際にVulkanがテンプレートに表示される
サンプルを実行する
https://vulkan.lunarg.com/doc/sdk/1.0.39.1/windows/getting_started.html
に書いてあるように CMake 3.0 以降、Python3.0以降、VisualStudio2013 Update4以降 が必要
CMake
https://cmake.org/download/ ここから Windows用をダウンロードしインストール CMakeのパスを設定するか聞かれるので、設定しておこう
Python
Windowsは下記より。くれぐれも 3.0以降を入れる事 Python Releases for Windows | Python.org
ビルド
上記をインストールしたあとは VisualStudioとCMake、Pythonにパスを通したコマンドプロンプト 具体的には VisualStudioに VS20xx用MSBuildのコマンドプロンプト 等を実行し SDKPATH/Samplesへいき build_windows_samples.bat を実行する
エラー!!
CMake Error at C:/Program Files/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find PythonInterp: Found unsuitable version “1.4”, but required is at least “3” (found C:/Program Files/Emscripten/python/2.7.5.3_64bit/python.exe) Call Stack (most recent call first): C:/Program Files/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:375 (_FPHSA_FAILURE_MESSAGE) C:/Program Files/CMake/share/cmake-3.8/Modules/FindPythonInterp.cmake:149 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) Sample-Programs/Hologram/CMakeLists.txt:1 (find_package)
Emscriptenを入れていてそっちのパスを見に行っている EmscriptenをアンインストールしCMake入れなおしたが 上記エラーが続き とりあえずあきらめた・・・
WindowsのPython どうすればいいんだろうか・・・
解決
CMakeCacheにごみが残っていたので、削除してビルドしなおしたらうまくいきました。
Samples\build以下に プロジェクトが作成されるのでサンプルをビルドできます
ただし、VK_LayerOverlayだけはビルド出来ませんでした でも現状問題ないので このままサンプル見て勉強です!