🌋

Vulkan入門で参考になる資料

2020/12/20に公開

Vulkanを入門で参考になる資料などをまとめます。

資料やサンプルリポジトリ、ライブラリなどの一覧はAwesome Vulkanを見るのが一番だと思いますが、この記事ではAwesome Vulkanに載っていない日本語の資料も記載し、実際に読んだり動かしたりして気が付いたことや注意点なども添えようと思います。

ちなみにこの記事ではVulkanレイトレーシング以外の一般的(ラスタライズ)な記事に焦点を当てています。Vulkanレイトレーシング入門に焦点を当てた記事も後日書くかもしれません。

資料

Vulkan Tutorial

一番におすすめしたいのはVulkan Tutorialです。このサイトのDrawing a triangleの節を一通り読んで動かすことが最も楽な入門方法だと思います。

入門用なのでvulkan.hppは使用せず、生のVulkanとなっています。

個人的にこのチュートリアルをvulkan.hppを利用して書き直すリポジトリを作っているのでよかったら参考にしてください。

Vulkan Programming Vol.1

日本語のVulkan入門資料で最も詳しく書かれているのがすらりんさんのVulkan Programmingシリーズだと思います。Boothで購入可能です。

丁寧に書かれていて分かりやすいのでおすすめです。現在は3冊目まで販売されているようで、実践的な使い方まで広くカバーしているみたいです(私は1冊目までしか読めてないですが)。こちらもvulkan.hppは使用していません。

少しだけ古い情報が含まれている点には注意です。具体的にはデバッグの際に用いる拡張としてVK_EXT_debug_reportが利用されていますが、現在では非推奨となっており、VK_EXT_debug_utilsを使うべきとされています。

Vulkan-Hpp

生のVulkanでチュートリアルをこなした後は、より使いやすくするためのC++ラッパーであるvulkan.hppを使っていくのが良いと思います。

これを使う際にはVulkan-HppのREADMEを読むことをおすすめします。特に拡張機能と関数ポインタの節を読まないとハマる気がします(私はハマりました)。

またサンプルコードも含まれているので参考になります。

3DグラフィクスAPI Vulkanを出来るだけやさしく解説する本

Fadisさんが執筆された3DグラフィクスAPI Vulkanを出来るだけやさしく解説する本もBoothで購入できます。これも貴重な日本語資料です。

vulkan.hppを使用したサンプルコードと使用しないサンプルコードを併記しているところが特徴的で、C++っぽく書きたい方にはおすすめです。

Vulkanの各機能がなんのために用意されているのかなど、しっかりした理解に繋がるヒントが多いと思います。

Vulkan Guide

Vulkan Guideはクロノス公式のガイドです。かなり広範に詳しく書かれています。

Vulkan API Reference Pages, Vulkan Specification

関数や構造体ごとの情報は公式ページを確認するといいと思います。

サンプルコード

KhronosGroup/Vulkan-Samples

KhronosGroup/Vulkan-Samplesはクロノス公式のサンプルリポジトリです。かなり色々なサンプルが含まれていて、簡単に動かすことができます。

ただし、プロジェクト全体が大きいので、自分で小さなプロジェクトを書いていく際には参考にしにくい気がします。

SaschaWillems/Vulkan

SaschaWillems/Vulkanも非常に参考になります。作者は前述のKhronosGroup/Vulkan-Samplesにもかなり貢献していて、結構同じようなサンプルが重複しています。

こちらの方がプロジェクトはコンパクトなので、何を行っているのかを把握しやすいかもしれません。サンプルをいじって遊んでみる場合はこっちがおすすめです。

LunarG/VulkanSamples

記事を書いている途中でたどり着いたのでちゃんと読んでいないのですが、LunarG/VulkanSamplesはとても分かりやすそうです。初歩のステップから順番に進めていけるようなサンプルになっていて、チュートリアルページも用意されています。(あとで目を通してみようと思います)

おわりに

私も超初心者なのでこういった記事を書くのはハードルが高いのですが、Vulkanに言及した日本語記事はまだまだ少ないので、少しでも誰かの参考になれば幸いです。

Discussion