2019-07-13_ヘッダーイラスト

Vulkan進捗報告

Vulkan学習の進捗報告です。といってもなにか見せられる成果があるわけではないのですが。

週1くらいは報告しておかないとnoteやめてしまいそうなので書きます

前回まで

前回まではVulkanでレイマーチングをやっていました。↓を作りました

ここまでで習得できたこと

 ・ Vulkanを使ったレンダリングのフローをざっくり把握
 ・ ディスクリプタについて詳しく調べた
 ・ レイマーチングの基本的な実装

レイマーチングの学習については主目的ではなかったので言及しません。いつかまたやる日が来たらそのときにまとめましょう

Vulkanの方はレンダリングを実行するフローをざっくりと把握できました。しかし、大部分のコードを写経しただけなので、応用が効くレベルまでの理解に到達できていません。今一度Vulkanを使用したレンダリングフローを詳しく学習する必要があると感じています。

次やること

次やること…というかすでに開始しているのですが、Vulkanのオンラインチュートリアルを参考に学習しています。

前回まではほとんど参考プログラムを写経していました。今回も写経はしますが、ひとつひとつのコードの意味・役割を丁寧にまとめていこうかと考えています。

前回は本当に何も知らなかったので、ひたすら写経する以外できませんでした。しかし、一回写経することにより、Vulkanによるレンダリングフローの全体像を把握することができたため、今度はより細かい部分に注目する余裕ができてきました。

参考プログラムにかかれているひとつひとつのコードの意味・役割が理解できれば、自分なりの修正・機能拡張もできるようになると思っています。

最終的には簡易的なレンダリングエンジンがつくれるようになりたいですね。

雑談:なんでVulkanをやるのか

一月ほどVulkanの学習を続けていますが、なんでVulkanの学習をしているのか?という疑問がたまに浮かんできます。学習を継続する上で、目的を明確にしておかないとモチベーションが低下してしまい挫折につながるため、ここで一度学習の目的について考えてみます。

最初の動機は職場で活かせそうだから、グラフィックスプログラマーとしてグラフィックスAPIの一つくらい実装できないと恥ずかしいとかそんな理由でした。

ただ、UnityやUnrealEngineといったゲームエンジンが全盛期のこの時代、グラフィックスAPIを直接実装するという仕事というのはかなり少ないのではないかととも思うようになりました。(これは推測にすぎませんが)

実際のところ、今の職場でもUnityを使用していますが、グラフィックスAPIを直接実装するという仕事はありません。グラフィックスAPIを利用したレンダリング実装方法を知っていればUnityのレンダリング実装も理解しやすいというメリットはありますが。

UnityやUnrealEngineを使った開発が標準になりつつある今、グラフィックスAPIを使った実装の経験がないグラフィックスプログラマーというのも珍しくなくなるかもしれません。そもそもグラフィックスプログラマーというのがゲーム開発の現場にはおらず、ゲームエンジン・レンダリングエンジン開発の現場にしかいない、という開発体制が一般的になるのかもしれません。(実際、グラフィックスプログラマー不在の開発チームというのは存在します)

以上のことを考慮すると、グラフィックスAPI、それもVulkanのような低レベル最適化を考慮した(習得が困難な)グラフィックスAPIというのは、ほとんどのゲーム開発現場ではあまり役にたたないのかもしれません。それよりもUnityやUnrealEngineに習熟したほうが開発現場で重宝されるかもしれません。

じゃあなんで自分はVulkanを学習するのか、を色々と考えた結果、自分が本当に尊敬できるグラフィックスプログラマーはみんなグラフィックスAPI使えるから自分も使えるようになりたいという結論になりました。

自分が本当に尊敬できるグラフィックスプログラマーはどんな人かというと、API・数学・物理・ハードウェア、その他様々な物事を学習し、いいグラフィックを作るために最善を尽くしている人たちです。言葉にすると大仰ですが、CEDECやSIGGRAPHで登壇発表しているような方の中には上記の条件を満たす人が少なからずいます。(こういう人たちに実際に話を聞くと「なんでそこまで知ってるんだ?」というくらいの知識量に驚かされます。)

おそらく、本当に良いグラフィックを作るには、グラフィックスAPIを始め様々な物事を学習する必要があるのでしょう。ありとあらゆることを学習したからこそゲーム仕様や開発体制に合わせたグラフィックス開発、またはまったく新しいグラフィックス表現が可能になるのかなと思っています。

自分もグラフィックスに関することはなるべく多く学習したいと思っています。グラフィックスAPI開発はその筆頭でしょう。仕事にすぐ結びつく可能性は低そうですが、グラフィックスAPIを駆使して素晴らしいグラフィックスを開発している人の存在が、グラフィックスAPIの学習は無駄ではないと証明していると思います。

以上、なんでグラフィックスAPIを学習するのか、という問の答えは「良いグラフィックスを開発するにはたくさんの知識が必要であり、グラフィックスAPIを用いた開発手法はその筆頭である」ということです

この記事が気に入ったらサポートをしてみませんか?