Note
|
SPIR-V の詳細については、SPIRV-Guide をご覧ください。 |
Vulkan には、Vulkan と SPIR-V シェーダとのインターフェイスを定義するセクションがあります。SPIR-V とのインターフェイスは、ほとんどの場合シェーダが一緒にコンパイルされるパイプラインの作成時に使用されます。
SPIR-V は Vulkan だけでなく他のターゲットも持っているため、多くの機能を持っています。Vulkan が必要とする機能については、付録を参照してください。Vulkan のいくつかの拡張機能と機能は、SPIR-V の機能がサポートされているかどうかをチェックするために用意されています。
glslang は GLSL、HLSL、ESSL の Khronos リファレンスフロントエンドであり、SPIR-V ジェネレータのサンプルです。GLSL、HLSL、ESSL から SPIR-V を作成するスタンドアロンの glslangValidator
を含んでいます。
Google が提供する Vulkan シェーダのコンパイルのためのツール、ライブラリ、テストのコレクションです。SPIRV-Tools と glslang のコア機能をラップした glslc
が含まれています。また、Shaderc には、SPIRV-Tools と SPIRV-Cross のコア機能をラップした spvc
も含まれています。
Shaderc は両方のツールをスタンドアロンのコマンドラインツール(glslc)とリンク先のライブラリ(libshaderc)としてビルドします。
Clspv は、Vulkan のコンピュートシェーダとして使用するために、OpenCL C のサブセットを SPIR-V に変換するプロトタイプコンパイラです。
SPIR-V を活用するためのツールの豊富なエコシステムがあります。Vulkan SDK では、開発者向けにビルドされパッケージ化されたすべての SPIR-V ツールの概要を紹介しています。
Khronos SPIRV-Tools プロジェクトは、SPIR-V モジュールを操作するための C および C++ の API とコマンドラインインターフェイスを提供しています。詳細は SPIRV-Guide を参照してください。
Khronos の SPIRV-Cross プロジェクトは、SPIR-V 上でリフレクションを行い、SPIR-V をディスアセンブルして目的の高レベルシェーディング言語に戻すための実用的なツールとライブラリです。詳しくは、SPIR-V Cross のメイン開発者である Hans Kristian 氏の、SPIR-V Cross のようなツール制作についての2つのプレゼンテーション(2018 Vulkanised(動画)と 2019 Vulkanised(動画) )をご覧ください。
Khronos の SPIRV-LLVM プロジェクトは、SPIR-V をサポートする LLVM フレームワークです。これは、LLVM と SPIR-V の双方向コンバータを含むことを目的としています。また、SPIR-V をターゲットとした LLVM ベースのフロントエンドコンパイラの基盤となります。