SPIR-V

提供: MonoBook
2020年5月19日 (火) 02:10時点におけるAdministrator (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

SPIR-V(語源:Standard Portable Intermediate Representation V、読み:すぴあ・ふぁいぶ)とは、Vulkanのために開発されたシェーディング言語中間コード表現である。

概要

SPIR-VはOpenCLのために開発された「SPIR」の後続として登場した。 SPIRの後続ではあるが完全に別物であり互換性はまったくない。

SPIRではLLVMを利用してGPUFPGAなどの幅広いデバイスを想定してグダグダになっていた。これを反省し、SPIR-VではGPUだけに特化したシンプルな独自実装に全面刷新となった。

順当にいけばSPIR 3.0という名称になりそうなものであったが、なぜかV(5.0)まで一気に飛んだ。

動作環境

「SPIR-VはOpenGL 4.6とVulkanで使える」とあるが、OpenGL 4.6がまともに動く環境は存在しないので、実質的にVulkan専用のような状態になっている。

また、Vulkanもまともに動くのはAndroidくらいなので、実質的にAndroid専用のような状態になっている。VulkanはAndroid 7.0 (API Level 24)から利用できる。

SPIR-VからGLSLHLSL、MSL(Metal)へ逆コンパイルする公式ツールもあり、直接使うよりは、そのような使い方がメインになりそうではある。

SPIR-Vを出力する

Vulkanでは公式SDKに付属のglslangを利用してGLSLからSPIR-Vを出力することができる。

また、マイクロソフトグーグルなどが開発するDirectX Shader Compiler(dxc)を利用してHLSLからSPIR-Vを出力することもできる。

利用開始までの難易度はglslangよりdxcの方が圧倒的に簡単だと思われる。

関連項目

外部リンク