「SPIR-V」の版間の差分
(ページの作成:「'''SPIR-V'''(語源:Standard Portable Intermediate Representation V)とは、Vulkanのために開発されたシェーディング言語の中間コー…」) |
Administrator (トーク | 投稿記録) (→概要) |
||
(2人の利用者による、間の6版が非表示) | |||
1行目: | 1行目: | ||
− | '''SPIR-V'''(語源:Standard Portable Intermediate Representation | + | '''SPIR-V'''(語源:Standard Portable Intermediate Representation V、読み:すぴあ・ふぁいぶ)とは、[[Vulkan]]のために開発された[[シェーディング言語]]の[[中間コード]]表現である。 |
− | [[OpenCL]]のために開発された「[[SPIR]] | + | ==概要== |
+ | 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)から利用できる。 | |
− | * 仕様書 = https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html | + | 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]] | ||
+ | |||
+ | ==外部リンク== | ||
+ | *仕様書 = https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html | ||
+ | |||
+ | [[category: コンピューター・グラフィックス]] | ||
+ | [[category: 3DCG]] | ||
+ | [[category: シェーディング言語]] |
2022年11月2日 (水) 08:48時点における最新版
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