「SPIR-V」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
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の後続ではあるが完全に別物であり互換性はまったくない。
  
[[Vulkan]]では[[SDK]]に付属のglslangを利用して[[GLSL]]および[[HLSL]]からSPIR-V[[バイナリ]]を出力することができる。
+
SPIRでは[[LLVM]]を利用して[[GPU]][[FPGA]]など幅広いデバイスを想定していたが、SPIR-Vからは[[GPU]]だけに特化したシンプルな独自実装になった。
  
== 関連項目 ==
+
順当にいけばSPIR 3.0という名称になりそうなものであったが、なぜかV(5.0)まで一気に飛んだ。
* [[Vulkan]]
 
* [[HLSL]]
 
* [[GLSL]]
 
* [[Cg]]
 
  
== 外部リンク ==
+
==動作環境==
* 仕様書 = https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html
+
「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]]
 +
 
 +
==外部リンク==
 +
*仕様書 = https://www.khronos.org/registry/spir-v/specs/1.0/SPIRV.html
  
 
[[category: コンピューターグラフィックス]]
 
[[category: コンピューターグラフィックス]]

2019年11月1日 (金) 07:42時点における版

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の方が圧倒的に簡単だと思われる。

関連項目

外部リンク