SPIR-V
SPIR-V(語源:Standard Portable Intermediate Representation V、読み:すぴあ・ふぁいぶ)とは、Vulkanのために開発されたシェーディング言語の中間コード表現である。
概要
SPIR-VはOpenCLのために開発された「SPIR」の後続として登場した。 SPIRの後続ではあるが完全に別物であり互換性はまったくない。
SPIRではLLVMを利用してGPUやFPGAなどの幅広いデバイスを想定してグダグダになっていた。これを反省し、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からGLSLやHLSL、MSL(Metal)へ逆コンパイルする公式ツールもあり、直接使うよりは、そのような使い方がメインになりそうではある。
SPIR-Vを出力する
Vulkanでは公式SDKに付属のglslangを利用してGLSLからSPIR-Vを出力することができる。
また、マイクロソフトやグーグルなどが開発するDirectX Shader Compiler(dxc)を利用してHLSLからSPIR-Vを出力することもできる。
利用開始までの難易度はglslangよりdxcの方が圧倒的に簡単だと思われる。
関連項目
- DirectX Shader CompilerでSPIR-Vを出力する
- SPIR-VからGLSLを生成する
- SPIR-VからHLSLを生成する
- MacにMoltenVKを入れてVulkanを使ってみる
- Vulkan
- HLSL
- GLSL
- Cg