Chapter 01

はじめに

2020年11月、Vulkan Ray Tracing の最終仕様がリリースされ、12月には最終仕様に対応したVulkan SDK 1.2.162.0 が公開されました。これによって開発者はマルチプラットフォームでリアルタイムレイトレーシングができるようになったと言えます。

この記事について

この記事ではVulkan Ray Tracingでゼロから三角形を出すまでの手順をステップごとに記述します。

この記事は以下のような特徴があります。

  • サードパーティの Vulkan ライブラリを使用せずゼロから記述する
  • 最終仕様に対応している
  • 公式 C++ラッパー vulkan.hpp を使うため冗長な記述がない
  • レイトレーシングに必要最低限なプログラムを目指す
  • 小さなヘルパーヘッダを 1 つだけ提供する

ヘルパーについて

レイトレーシングに関係のないVulkanのセットアップ部分についてはヘルパーでスキップできるようになっています。このヘルパーは単純な関数をまとめた程度のもので、大きなクラスは存在しません。そのため設計としては良くありませんが、簡単に読むことができるようになっています。また、このヘルパーの大部分は Vulkan Tutorial に準拠しているため、関数がよく分からない場合はこちらを参照することで理解できるはずです。

環境

  • Vulkan SDK 1.2.162.0
  • Windows10 64bit
  • Visual Studio 2019

GPU

  • NVIDIA GeForce 1070Ti
  • GEFORCE GAME READY DRIVER 460.89

2020年12月現在、最新のSDKとドライバーでなければ動かすことはできませんので注意してください。

リポジトリ

この記事で使用するプログラムはこのリポジトリに置いています。

https://github.com/nishidate-yuki/vulkan_raytracing_from_scratch

対象読者

この記事では対象は制限しませんが、基本的なVulkanオブジェクトのセットアップや同期オブジェクトについては説明しません。ヘルパーの中身や同期オブジェクトの取り扱いが気になる方は上にも記載したVulkan Tutorial などの非レイトレ入門記事を参照することをおすすめします。

筆者について (optional)

筆者はVulkanに入門したばかりの学生で、理解が足りていない部分も多いです。Web上に間違った記述を残すべきではないと考えているため、至らない箇所があれば是非ご指摘ください。Twitter(@asta18425)のDMでも大丈夫です。