Vulkan進捗報告、あるいはGraphicsPipelineについて
Vulkan学習の進捗報告です。
前回まで
前回はSwapChainについて解説しました。
今回はグラフィックスパイプライン構築についてです。今回も詳細はGithubのwikiに書きました。
06.1 GraphicsPipeline Introduction から 06.5 Create Graphics pipeline までですね
Vulkanのグラフィックスパイプライン
詳細はwikiに書いたので、Vulkanでのグラフィックスパイプラインについて概略・特徴を紹介します。
グラフィックスパイプライン
グラフィックスパイプラインとは、レンダーターゲットのピクセル(の値)を決定する一連の処理のこと
パイプラインステージの設定
Vulkanではパイプラインステージ全ての設定をスクラッチで実装する必要がある
パイプラインは、処理を自前で実装するprogrammableステージと固定機能を使用するfixed-functionステージがあります
fixed-functionステージは処理の実装はできませんが、パラメータの設定をすることにより求める機能を有効にします。
レンダーパス
レンダリングはレンダーパスをベースに行われます。レンダーパスはVulkanの特徴的な機能の1つであり、難解な機能でもあります。詳しくは06.4 Render passesを参照してください。
エラー修正ケーススタディ
今回の実装で遭遇したエラーとその修正方法についてまとめました(99.01 null pointer error)。
ここから雑談
いよいよグラフィックスに関する部分に入ってきたように思います。
レンダーパスなんかはかなり高度な最適化がかけられる部分であり、低レベルグラフィックスAPIならではって感じです。
一方で、こんな高度な最適化をかける仕事なんてあるんだろうかと不安にもなってきます。
こうした不安を払拭する一番いい方法はとにかく早く終わらせるということだと思います。