コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「Vulkan (API)」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
編集の要約なし
Cewbot (会話 | 投稿記録)
14行目: 14行目:
| 最新評価版発表日 =
| 最新評価版発表日 =
| プログラミング言語 =
| プログラミング言語 =
| 対応OS = [[Microsoft Windows|Windows]]、[[Linux]]、[[Android]]、その他
| 対応OS = [[Microsoft Windows|Windows]]、[[Linux]]、[[Android (オペレーティングシステム)|Android]]、その他
| エンジン =
| エンジン =
| 対応プラットフォーム = [[クロスプラットフォーム]]|
| 対応プラットフォーム = [[クロスプラットフォーム]]|
36行目: 36行目:
[[Game Developers Conference|GDC]] 2015では、新規格の名称が'''"Vulkan"'''<ref>{{lang|de|vulkan}}はドイツ語で "火山" を意味し、英語の{{lang|en|volcano}}に相当する。</ref><ref>[https://www.geeks3d.com/20150302/vulkan-the-official-name-of-glnext-opengl-5-0/ Vulkan: the Official Name of glNext (Next Generation OpenGL) | Geeks3D]</ref><ref>[https://www.extremetech.com/gaming/200265-khronos-targets-directx-12-with-next-generation-vulkan-api Khronos targets DirectX 12 with next-generation Vulkan API - ExtremeTech]</ref>となることが発表され<ref>[http://www.4gamer.net/games/293/G029343/20150304076/ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに] - 4Gamer.net</ref>、[[Direct3D]] 12同様のコマンドキューベースのマルチスレッドレンダリング機能や、[[OpenCL]]とのプログラミング基盤共通化をもたらす'''SPIR-V'''中間表現<ref>[https://www.khronos.org/spir SPIR - The first open standard intermediate language for parallel compute and graphics]</ref>を導入することが明らかにされた。また、Vulkanには[[アドバンスト・マイクロ・デバイセズ|AMD]]独自のローレベルグラフィックスAPIである[[Mantle (API)|Mantle]]が要素技術として取り込まれることが発表された<ref>[http://www.4gamer.net/games/107/G010729/20150304002/ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」でAMDの「Mantle」を採用] - 4Gamer.net</ref>。
[[Game Developers Conference|GDC]] 2015では、新規格の名称が'''"Vulkan"'''<ref>{{lang|de|vulkan}}はドイツ語で "火山" を意味し、英語の{{lang|en|volcano}}に相当する。</ref><ref>[https://www.geeks3d.com/20150302/vulkan-the-official-name-of-glnext-opengl-5-0/ Vulkan: the Official Name of glNext (Next Generation OpenGL) | Geeks3D]</ref><ref>[https://www.extremetech.com/gaming/200265-khronos-targets-directx-12-with-next-generation-vulkan-api Khronos targets DirectX 12 with next-generation Vulkan API - ExtremeTech]</ref>となることが発表され<ref>[http://www.4gamer.net/games/293/G029343/20150304076/ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに] - 4Gamer.net</ref>、[[Direct3D]] 12同様のコマンドキューベースのマルチスレッドレンダリング機能や、[[OpenCL]]とのプログラミング基盤共通化をもたらす'''SPIR-V'''中間表現<ref>[https://www.khronos.org/spir SPIR - The first open standard intermediate language for parallel compute and graphics]</ref>を導入することが明らかにされた。また、Vulkanには[[アドバンスト・マイクロ・デバイセズ|AMD]]独自のローレベルグラフィックスAPIである[[Mantle (API)|Mantle]]が要素技術として取り込まれることが発表された<ref>[http://www.4gamer.net/games/107/G010729/20150304002/ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」でAMDの「Mantle」を採用] - 4Gamer.net</ref>。


2015年8月には、[[Google]]が[[Android]]においてVulkanをサポートする旨を発表<ref>[http://japan.cnet.com/news/service/35068703/ 「Android」、低オーバーヘッドのグラフィックスAPI「Vulkan」をサポートへ] - CNET Japan</ref>。
2015年8月には、[[Google]]が[[Android (オペレーティングシステム)|Android]]においてVulkanをサポートする旨を発表<ref>[http://japan.cnet.com/news/service/35068703/ 「Android」、低オーバーヘッドのグラフィックスAPI「Vulkan」をサポートへ] - CNET Japan</ref>。


2016年2月16日、Vulkan 1.0の正式仕様がリリースされた<ref>[http://www.4gamer.net/games/293/G029343/20160217055/ 新世代の低オーバーヘッドなグラフィックスAPI「Vulkan」,ついに正式始動] - 4Gamer.net</ref>。Vulkan仕様のリリースとともに、AMD、[[NVIDIA]]、[[インテル]]、[[クアルコム]]、{{仮リンク|イマジネーションテクノロジーズ|en|Imagination Technologies}}といった代表的なベンダーはVulkan対応ドライバーのベータ版の提供や認証を開始した<ref>[https://www.qualcomm.com/news/releases/2016/02/17/qualcomm-announces-vulkan-api-support-adreno-530-gpu Qualcomm Announces Vulkan API Support on the Adreno 530 GPU] &#x007c; Qualcomm</ref>。Androidにおいては、2016年8月リリースのAndroid 7.0 (Nougat) からOSレベルの対応が開始された。実際にVulkanが利用できるかどうかは、システムがVulkan対応GPUを搭載しているかどうかにも依存する。Android 9以上でVulkan 1.1 APIに対応しており、また64ビット版のAndroid 10を最初から搭載するデバイスはVulkan 1.1のサポートが必須となっている<ref>[https://source.android.com/devices/graphics/implement-vulkan Implementing Vulkan | Android Open Source Project]</ref>。
2016年2月16日、Vulkan 1.0の正式仕様がリリースされた<ref>[http://www.4gamer.net/games/293/G029343/20160217055/ 新世代の低オーバーヘッドなグラフィックスAPI「Vulkan」,ついに正式始動] - 4Gamer.net</ref>。Vulkan仕様のリリースとともに、AMD、[[NVIDIA]]、[[インテル]]、[[クアルコム]]、{{仮リンク|イマジネーションテクノロジーズ|en|Imagination Technologies}}といった代表的なベンダーはVulkan対応ドライバーのベータ版の提供や認証を開始した<ref>[https://www.qualcomm.com/news/releases/2016/02/17/qualcomm-announces-vulkan-api-support-adreno-530-gpu Qualcomm Announces Vulkan API Support on the Adreno 530 GPU] &#x007c; Qualcomm</ref>。Androidにおいては、2016年8月リリースのAndroid 7.0 (Nougat) からOSレベルの対応が開始された。実際にVulkanが利用できるかどうかは、システムがVulkan対応GPUを搭載しているかどうかにも依存する。Android 9以上でVulkan 1.1 APIに対応しており、また64ビット版のAndroid 10を最初から搭載するデバイスはVulkan 1.1のサポートが必須となっている<ref>[https://source.android.com/devices/graphics/implement-vulkan Implementing Vulkan | Android Open Source Project]</ref>。
51行目: 51行目:
また、Vulkanに対応する[[デバイスドライバー]]<!-- リダイレクトは表記揺れを解消するために存在する。本記事では長音記号を付ける方向で統一している。 -->や独自のSDK開発を所望するベンダー向けに、ICD (Installable Client Driver) ローダーやアーキテクチャに関するドキュメントが[[GitHub]]にて公開されている。
また、Vulkanに対応する[[デバイスドライバー]]<!-- リダイレクトは表記揺れを解消するために存在する。本記事では長音記号を付ける方向で統一している。 -->や独自のSDK開発を所望するベンダー向けに、ICD (Installable Client Driver) ローダーやアーキテクチャに関するドキュメントが[[GitHub]]にて公開されている。


[[Android]]においては、2016年6月にリリースされたリビジョン12以降の[[Android Native Development Kit|NDK]]でVulkan 1.0に正式対応している<ref>[https://developer.android.com/ndk/downloads/revision_history NDK Revision History | Android NDK | Android Developers]</ref><!-- ヘッダーとライブラリ自体はr11から含まれている。 -->。なお、Android 10ではベンダードライバーによるOpenGL ES実装以外に、後述するVulkanバックエンドのANGLEを利用したOpenGL ES 2.0互換実装も利用できるようになっている<ref>[https://developers-jp.googleblog.com/2019/04/android-q.html Google Developers Japan: Android Q ベータ版の概要]</ref>。
[[Android (オペレーティングシステム)|Android]]においては、2016年6月にリリースされたリビジョン12以降の[[Android Native Development Kit|NDK]]でVulkan 1.0に正式対応している<ref>[https://developer.android.com/ndk/downloads/revision_history NDK Revision History | Android NDK | Android Developers]</ref><!-- ヘッダーとライブラリ自体はr11から含まれている。 -->。なお、Android 10ではベンダードライバーによるOpenGL ES実装以外に、後述するVulkanバックエンドのANGLEを利用したOpenGL ES 2.0互換実装も利用できるようになっている<ref>[https://developers-jp.googleblog.com/2019/04/android-q.html Google Developers Japan: Android Q ベータ版の概要]</ref>。


=== 補助ライブラリ ===
=== 補助ライブラリ ===

2020年9月6日 (日) 08:52時点における版

Vulkan
開発元 クロノス・グループ
初版 2016年2月16日 (8年前) (2016-02-16)
最新版 1.3.261 - 2023年8月4日 (16か月前) (2023-08-04)[1] [±]
リポジトリ ウィキデータを編集
対応OS WindowsLinuxAndroid、その他
プラットフォーム クロスプラットフォーム
対応言語 C/C++
種別 3DグラフィックスAPI
公式サイト www.khronos.org/vulkan/
テンプレートを表示

Vulkan(ヴァルカン)は、クロノス・グループ: Khronos Group)が策定している、オープンスタンダードロイヤリティフリークロスプラットフォームなリアルタイム3次元コンピュータグラフィックス・コンピュートAPIである。グラフィックスハードウェア層に近いローレベル (low level) な制御を目的としており、これによりオーバーヘッドを低減し、ハードウェア限界性能を引き出すことが可能となる。VulkanはアップルMetalマイクロソフトDirect3D 12といった先発のローレベルAPIと競合するが、プラットフォーム独自の固有仕様ではなく、様々なデバイスやオペレーティングシステムをターゲットにできることが特徴である。

経緯

Vulkanが出現する以前、クロスプラットフォームなグラフィックスAPIとしてOpenGLおよびOpenGL ESがすでに存在していた。しかし、OpenGL黎明期のハードウェア設計に由来する互換性重視のAPI設計は徐々に陳腐化し、OpenGL 4に至る頃にはすでに最新のGPUハードウェア設計との乖離が発生してしまっていた。また、OpenGL/OpenGL ESはハードウェアを高度に抽象化しており、そのためプラットフォーム間の移植性やアプリケーション開発者にとっての利便性は高いものの、AAAタイトルのゲームなどに代表されるような性能要求の厳しいソフトウェアの開発に利用する場合はオーバーヘッドが大きくなってしまい、ハードウェアの限界性能を引き出すことができなくなってしまうという問題を抱えていた。オーバーヘッドの増加による描画効率の低下はまた電力効率の低下にも直結するため、モバイル機器など電力供給の限られるデバイスにおいても効率面での影響は無視できない。

このため、SIGGRAPH 2014で、レガシーな設計が蓄積しているOpenGLをリセットし、ゼロから構築し直して刷新する、次世代の標準3D API規格 (OpenGL Next Generation, glNext) の策定が始められることがアナウンスされた。このとき、マルチスレッド対応やシェーディング中間言語などの近代的な技術が導入されることが発表された[2]

GDC 2015では、新規格の名称が"Vulkan"[3][4][5]となることが発表され[6]Direct3D 12同様のコマンドキューベースのマルチスレッドレンダリング機能や、OpenCLとのプログラミング基盤共通化をもたらすSPIR-V中間表現[7]を導入することが明らかにされた。また、VulkanにはAMD独自のローレベルグラフィックスAPIであるMantleが要素技術として取り込まれることが発表された[8]

2015年8月には、GoogleAndroidにおいてVulkanをサポートする旨を発表[9]

2016年2月16日、Vulkan 1.0の正式仕様がリリースされた[10]。Vulkan仕様のリリースとともに、AMD、NVIDIAインテルクアルコムイマジネーションテクノロジーズ英語版といった代表的なベンダーはVulkan対応ドライバーのベータ版の提供や認証を開始した[11]。Androidにおいては、2016年8月リリースのAndroid 7.0 (Nougat) からOSレベルの対応が開始された。実際にVulkanが利用できるかどうかは、システムがVulkan対応GPUを搭載しているかどうかにも依存する。Android 9以上でVulkan 1.1 APIに対応しており、また64ビット版のAndroid 10を最初から搭載するデバイスはVulkan 1.1のサポートが必須となっている[12]

なお、Vulkanはハードウェアの詳細な制御を可能とするローレベルAPIである一方、従来のOpenGLはCPU-GPU間の同期などの煩雑な処理を自動で行なってくれる上位層のAPIとして、今後もメンテナンスおよびアップデートが継続されることになっている[13]

シェーディング言語

Vulkanがサポートする最初の高レベルシェーディング言語は、OpenGLと同じくGLSLとなる。ただし、VulkanではSPIR-Vを標準的に利用することが可能であるため、GLSLで記述したシェーダープログラムをオフラインコンパイルし、SPIR-V英語版としてバイナリに変換してからアプリケーションに同梱することが可能となる。そのほか、Vulkan SDKに付属するオフラインシェーダーコンパイラーglslangValidatorには、入力としてHLSLで書かれたソースコードを使うことができるようになるコンパイルオプションも存在する。

開発環境

Vulkanの公式ソフトウェア開発キット (SDK) として、Valve社の協力のもとLunarG英語版社がLunarG Vulkan SDKをリリースしている。同SDKはWindowsLinux、およびmacOSに対応している。macOSに関しては後述のMoltenVKを間接的に利用している[14]。このSDKはiOSには対応していない。

また、Vulkanに対応するデバイスドライバーや独自のSDK開発を所望するベンダー向けに、ICD (Installable Client Driver) ローダーやアーキテクチャに関するドキュメントがGitHubにて公開されている。

Androidにおいては、2016年6月にリリースされたリビジョン12以降のNDKでVulkan 1.0に正式対応している[15]。なお、Android 10ではベンダードライバーによるOpenGL ES実装以外に、後述するVulkanバックエンドのANGLEを利用したOpenGL ES 2.0互換実装も利用できるようになっている[16]

補助ライブラリ

  • GLFW英語版 - OpenGL向けのマルチプラットフォームライブラリであるが、バージョン3.2以降でVulkanにも対応した[17]
  • vulkan-cpp - Googleの提供するVulkan用のC++向け抽象化ライブラリ[18]。ライセンスはApache License 2.0。
  • V-EZ - AMDの提供するVulkan用の簡略化ミドルウェア[19][20]
  • Anvil - AMDの提供するVulkan用フレームワーク[21]。ライセンスはMIT License
  • Falcor - NVIDIAの提供するVulkanおよびDirectX 12用のレンダリングフレームワーク。
  • Vulkan Memory Allocator - AMDの提供するVulkan用メモリ管理ライブラリ[22]。ライセンスはMIT License。
  • ANGLE英語版 - 各種3DグラフィックスAPIをバックエンドに利用できるOpenGL ES互換レイヤー。2019年現在、OpenGL ES 2.0対応のVulkanバックエンドが完成している。

言語バインディング

  • Vulkan-Hpp - Vulkan APIのC++バインディング[23]。Khronos Groupが提供している。ライセンスはApache License 2.0。元々NVIDIAで開発された[24]
  • VulkanSharp - Vulkan APIの.NETバインディング[25]Mono Projectが提供している。ライセンスはMIT License。

互換レイヤー

  • MoltenVK英語版 - Vulkan APIをAppleのMetal API上で使うためのオープンソース互換レイヤー[26]。Khronos Groupが提供している。ライセンスはApache License 2.0。
  • VulkanOnD3D12 - Vulkan APIをMicrosoftのDirect3D 12 API上で使うためのオープンソース互換レイヤー[27]。ライセンスはApache License 2.0。
  • Rostkatze - Vulkan APIをMicrosoftのDirect3D 12 API上で使うためのオープンソース互換レイヤー[28]。ライセンスはApache License 2.0。

MoltenVK

アップルのmacOS/iOS上では、Vulkanは2016年2月時点でサポートされていないが、Metal APIを利用してVulkanを実現するMoltenVK(旧称MetalVK)の開発がBrenwill Workshopによって進められている[29][30]

2018年2月26日に、クロノスはValve、LunarG、Brenwill Workshopとの協業によるMoltenVKのオープンソース化を発表した[31][32][33]。これによりmacOS/iOSでもVulkanおよび開発ツールを無償で利用可能になった。SPIR-V/GLSLをMetal Shading Language (MSL) に変換するコマンドラインのツール「MoltenVKShaderConverter」も用意されている[34]

GLFWはバージョン3.3にて、MoltenVKを経由することでmacOS上でVulkanをサポートするようになった[35]

脚注

  1. ^ Vulkan® 1.3.261 - A Specification”. クロノス・グループ (2023年7月28日). 2023年8月4日閲覧。
  2. ^ OpenGL 3Dの次世代規格の策定作業がKhronos Groupの指揮下に始まる…ハードウェア重視、マルチスレッド、共通シェーディング言語など - TechCrunch
  3. ^ vulkanはドイツ語で "火山" を意味し、英語のvolcanoに相当する。
  4. ^ Vulkan: the Official Name of glNext (Next Generation OpenGL) | Geeks3D
  5. ^ Khronos targets DirectX 12 with next-generation Vulkan API - ExtremeTech
  6. ^ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに - 4Gamer.net
  7. ^ SPIR - The first open standard intermediate language for parallel compute and graphics
  8. ^ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」でAMDの「Mantle」を採用 - 4Gamer.net
  9. ^ 「Android」、低オーバーヘッドのグラフィックスAPI「Vulkan」をサポートへ - CNET Japan
  10. ^ 新世代の低オーバーヘッドなグラフィックスAPI「Vulkan」,ついに正式始動 - 4Gamer.net
  11. ^ Qualcomm Announces Vulkan API Support on the Adreno 530 GPU | Qualcomm
  12. ^ Implementing Vulkan | Android Open Source Project
  13. ^ Vulkan on NVIDIA GPUs; Piers Daniell, Driver Software Engineer, OpenGL and Vulkan
  14. ^ Benefits of the Vulkan macOS SDK - LunarG
  15. ^ NDK Revision History | Android NDK | Android Developers
  16. ^ Google Developers Japan: Android Q ベータ版の概要
  17. ^ GLFW: Release notes | Release notes for 3.2 | New features in version 3.2 | Support for Vulkan
  18. ^ google-admin/vulkan-cpp-library
  19. ^ GPUOpen-LibrariesAndSDKs/V-EZ
  20. ^ V-EZ: AMD Releases New Easy-To-Use Vulkan Middleware, Simplified API Phoronix 2018年3月26日
  21. ^ GPUOpen-LibrariesAndSDKs/Anvil: Anvil is a cross-platform framework for Vulkan
  22. ^ AMD's GPUOpen Posts New Vulkan Memory Allocator Phoronix 2017年6月19日
  23. ^ KhronosGroup/Vulkan-Hpp: Open-Source Vulkan C++ API
  24. ^ Vulkan bekommt offizielle API für C++ Golem.deドイツ語版 2016年7月25日
  25. ^ mono/VulkanSharp: Open source .NET binding for the Vulkan API
  26. ^ KhronosGroup/MoltenVK: MoltenVK is an implementation of the high-performance, industry-standard Vulkan graphics and compute API, that runs on Apple's Metal graphics framework, bringing Vulkan to iOS and macOS.
  27. ^ Open-Source Project Trying To Map Vulkan Onto Direct3D 12 & Metal Phoronix 2018年1月28日
  28. ^ Rostkatze: Vulkan Over Direct3D 12 With C++ Phoronix 2018年3月1日
  29. ^ MetalVK – Molten
  30. ^ MoltenVK – Molten
  31. ^ クロノス、VulkanアプリケーションのAppleプラットフォームへのポーティングを実現する、 オープンソースを発表 - Press Release - Khronos Group”. jp.khronos.org. 2018年7月31日閲覧。
  32. ^ “Vulkan Applications Enabled on Apple Platforms” (英語). The Khronos Group. (2018年2月26日). https://www.khronos.org/news/press/vulkan-applications-enabled-on-apple-platforms 2018年7月31日閲覧。 
  33. ^ 株式会社インプレス (2018年2月27日). “グラフィックスAPI「Vulkan」がmacOS/iOSで利用可能に” (日本語). PC Watch. https://pc.watch.impress.co.jp/docs/news/1108626.html 2018年7月31日閲覧。 
  34. ^ MoltenVK/MoltenVK_Runtime_UserGuide.md at master · KhronosGroup/MoltenVK
  35. ^ GLFW: Release notes | Release notes for version 3.3 | New features in version 3.3 | Support for Vulkan on macOS via MoltenVK

関連項目

外部リンク