メインメニューを開く

差分

SPIR-V

1,396 バイト追加, 2022年11月2日 (水) 08:48
'''SPIR-V'''(語源:Standard Portable Intermediate Representation V)とは、V、読み:すぴあ・ふぁいぶ)とは、[[Vulkan]]のために開発された[[シェーディング言語]]の[[中間コード]]表現である。
==概要==SPIR-Vは[[OpenCL]]のために開発された「[[SPIR]]」と似ているが別物である。SPIRは[[LLVM]]を利用していたが、SPIR-Vからはより[[シェーダー]]に特化して効率的に利用できるよう独自実装になった。順当にいけばSPIR 3.0という名称になりそうなものであったが、なぜかV(5.0)まで一気に飛んだ。」の後続として登場した。SPIRの後続ではあるが完全に別物であり互換性はまったくない。
VulkanではSDKに付属のglslangを利用してSPIRでは[[GLSLLLVM]]およびを利用して[[HLSLGPU]]からSPIRだけでなく[[FPGA]]などの幅広いデバイスを想定してグダグダになっていた。この問題を反省しSPIR-VVでは[[バイナリGPU]]を出力することができる。だけに特化したシンプルな実装に全面刷新となった。
== 関連項目 ==順当にいけばSPIR 3.0という名称になりそうなものであったが、なぜかV(5.0)まで一気に飛んだ。
* ==動作環境==「SPIR-VはOpenGL 4.6と[[Vulkan]]* [[HLSL]]* [[GLSL]]* [[Cg]]で使える」とあるが、OpenGL 4.6がまともに動く環境は存在しないので、実質的にVulkan専用のような状態になっている。
== 外部リンク ==* 仕様書 = https://www.khronos.org/registry/spir-v/specs/1また、[[Vulkan]]もまともに動くのは[[Android]]くらいなので、実質的に[[Android]]専用のような状態になっている。[[Vulkan]]はAndroid 7.0/SPIRV.html(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]] ==外部リンク==*仕様書 = https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html [[category: コンピューター・グラフィックス]][[category: 3DCG]][[category: コンピューターグラフィックスシェーディング言語]]