メインメニューを開く

差分

SPIRV-Reflect

1,832 バイト追加, 2022年11月4日 (金) 01:56
ページの作成:「'''SPIRV-Reflect'''(コマンドはすべて小文字:spirv-reflect)とは、Vulkan SDKに含まれるツールのひとつで、SPIR-Vのバイトコー…」
'''SPIRV-Reflect'''(コマンドはすべて小文字:spirv-reflect)とは、[[Vulkan SDK]]に含まれるツールのひとつで、[[SPIR-V]]の[[バイトコード]]に含まれるデータ構造を表示するもの。

== 概要 ==
[[GPU]]で[[シェーダー]]を実行する際には[[シェーダー]]本体([[プログラム]])と[[データ]]([[変数]])を[[CPU]]から[[GPU]]へ送る必要がある。
この際に「[[CPU]]から送り込まれた[[変数]]」と「[[シェーダー]]で使っている[[変数]]」のデータ構造が一致しないと当然ながら暴走する。

ただ、このデータ構造を[[プログラマー]]が自由に書いた[[ソースコード]]から目視で取得するは大変な作業である。当然ながら[[シェーダー]]の[[ソースコード]]を書き換えたら「データを送る処理」も書き換えなければならない。
間違いなく[[バグ]]の温床になる。

そこで一度[[SPIRV]]に[[コンパイル]]した後に、そこから整頓されたデータ構造を抽出しようというもの。
[[プログラマー]]が自由に書いたソースコードから抽出するよりマシ、
「データを送る処理の書き換えも楽になる」だろうという代物である。

== 備考 ==
spirv-reflectは[[yaml]]形式でのデータ構造の出力もできる。その情報から自前で「[[データベース]]でいう[[ORM]]みたいなもの」を作り「データを送る処理」を全自動化するのが現実的な解決策であろう。たぶんこれが一番バグを減らせると思う。

$ spirv-reflect --yaml render_vs.spv

== 外部リンク==
* https://github.com/KhronosGroup/SPIRV-Reflect

[[category: Vulkan]]
[[category: コンピューター・グラフィックス]]