最新版 |
編集中の文章 |
1行目: |
1行目: |
− | '''SPIR-V'''(語源:Standard Portable Intermediate Representation V、読み:すぴあ・ふぁいぶ)とは、[[Vulkan]]のために開発された[[シェーディング言語]]の[[中間コード]]表現である。 | + | '''SPIR-V'''(語源:Standard Portable Intermediate Representation V)とは、[[Vulkan]]のために開発された[[シェーディング言語]]の[[中間コード]]表現である。 |
| | | |
− | ==概要==
| + | [[OpenCL]]のために開発された「[[SPIR]]」と似ているが別物である。SPIRは[[LLVM]]を利用していたが、SPIR-Vからはより[[シェーダー]]に特化して効率的に利用できるよう独自実装になった。順当にいけばSPIR 3.0という名称になりそうなものであったが、なぜかV(5.0)まで一気に飛んだ。 |
− | SPIR-Vは[[OpenCL]]のために開発された「[[SPIR]]」の後続として登場した。
| |
− | SPIRの後続ではあるが完全に別物であり互換性はまったくない。
| |
| | | |
− | SPIRでは[[LLVM]]を利用して[[GPU]]だけでなく[[FPGA]]などの幅広いデバイスを想定してグダグダになっていた。この問題を反省しSPIR-Vでは[[GPU]]だけに特化したシンプルな実装に全面刷新となった。
| + | VulkanではSDKに付属のglslangを利用して[[GLSL]]および[[HLSL]]からSPIR-V[[バイナリ]]を出力することができる。 |
| | | |
− | 順当にいけばSPIR 3.0という名称になりそうなものであったが、なぜかV(5.0)まで一気に飛んだ。
| + | == 関連項目 == |
| | | |
− | ==動作環境==
| + | * [[Vulkan]] |
− | 「SPIR-VはOpenGL 4.6と[[Vulkan]]で使える」とあるが、OpenGL 4.6がまともに動く環境は存在しないので、実質的にVulkan専用のような状態になっている。
| + | * [[HLSL]] |
| + | * [[GLSL]] |
| + | * [[Cg]] |
| | | |
− | また、[[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]])へ逆コンパイルする公式ツールもあり、直接使うよりは、そのような使い方がメインになりそうではある。
| + | [[category: コンピューターグラフィックス]] |
− | | |
− | ==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: シェーディング言語]] | |