「Vulkan (API)」の版間の差分
VulcanSphere (会話 | 投稿記録) |
m Bot作業依頼: Apple関連記事の改名に伴うリンク修正依頼 (Apple|Apple) - log |
||
26行目: | 26行目: | ||
}} |
}} |
||
'''Vulkan'''(ヴァルカン)は、[[クロノス・グループ]]({{lang-en-short|Khronos Group}})が策定している、[[オープン標準|オープンスタンダード]]・[[ロイヤリティフリー]]・[[クロスプラットフォーム]]なリアルタイム[[3次元コンピュータグラフィックス]]・コンピュート[[アプリケーションプログラミングインタフェース|API]]である。グラフィックスハードウェア層に近いローレベル (low level) な制御を目的としており、これによりオーバーヘッドを低減し、ハードウェア限界性能を引き出すことが可能となる。Vulkanは[[ |
'''Vulkan'''(ヴァルカン)は、[[クロノス・グループ]]({{lang-en-short|Khronos Group}})が策定している、[[オープン標準|オープンスタンダード]]・[[ロイヤリティフリー]]・[[クロスプラットフォーム]]なリアルタイム[[3次元コンピュータグラフィックス]]・コンピュート[[アプリケーションプログラミングインタフェース|API]]である。グラフィックスハードウェア層に近いローレベル (low level) な制御を目的としており、これによりオーバーヘッドを低減し、ハードウェア限界性能を引き出すことが可能となる。Vulkanは[[Apple]]の[[Metal (API)|Metal]]や[[マイクロソフト]]の[[Direct3D]] 12といった先発のローレベルAPIと競合するが、プラットフォーム独自の固有仕様ではなく、様々なデバイスや[[オペレーティングシステム]]をターゲットにできることが特徴である。 |
||
<!-- あえて「低レベル」ではなく「ローレベル」という表記にしている。日本語の場合、「低レベル」という表現だと「技術水準が低い」という印象を与えかねないため。 --> |
<!-- あえて「低レベル」ではなく「ローレベル」という表記にしている。日本語の場合、「低レベル」という表現だと「技術水準が低い」という印象を与えかねないため。 --> |
||
2021年5月20日 (木) 12:49時点における版
開発元 | クロノス・グループ |
---|---|
初版 | 2016年2月16日 |
最新版 | 1.3.261 - 2023年8月4日[1] [±] |
リポジトリ | |
対応OS | Windows、Linux、Android、その他 |
プラットフォーム | クロスプラットフォーム |
対応言語 | C/C++ |
種別 | 3DグラフィックスAPI |
公式サイト |
www |
Vulkan(ヴァルカン)は、クロノス・グループ(英: Khronos Group)が策定している、オープンスタンダード・ロイヤリティフリー・クロスプラットフォームなリアルタイム3次元コンピュータグラフィックス・コンピュートAPIである。グラフィックスハードウェア層に近いローレベル (low level) な制御を目的としており、これによりオーバーヘッドを低減し、ハードウェア限界性能を引き出すことが可能となる。VulkanはAppleの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月には、GoogleがAndroidにおいて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はWindows、Linux、および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用のレンダリングフレームワーク[22]。
- Vulkan Memory Allocator - AMDの提供するVulkan用メモリ管理ライブラリ[23][24]。ライセンスはMIT License。
- ANGLE - 各種3DグラフィックスAPIをバックエンドに利用できるOpenGL ES互換レイヤー。2021年3月現在、OpenGL ES 3.1対応のVulkanバックエンドが完成している。
言語バインディング
- Vulkan-Hpp - Vulkan APIのC++バインディング[25]。Khronos Groupが提供している。ライセンスはApache License 2.0。元々NVIDIAで開発された[26]。
- VulkanSharp - Vulkan APIの.NETバインディング[27]。Mono Projectが提供している。ライセンスはMIT License。
互換レイヤー
- MoltenVK - Vulkan APIをAppleのMetal API上で使うためのオープンソース互換レイヤー[28]。Khronos Groupが提供している。ライセンスはApache License 2.0。
- VulkanOnD3D12 - Vulkan APIをMicrosoftのDirect3D 12 API上で使うためのオープンソース互換レイヤー[29]。ライセンスはApache License 2.0。
- Rostkatze - Vulkan APIをMicrosoftのDirect3D 12 API上で使うためのオープンソース互換レイヤー[30]。ライセンスはApache License 2.0。
MoltenVK
アップルのmacOS/iOS上では、Vulkanは2016年2月時点でサポートされていないが、Metal APIを利用してVulkanを実現するMoltenVK(旧称MetalVK)の開発がBrenwill Workshopによって進められている[31][32]。
2018年2月26日に、クロノスはValve、LunarG、Brenwill Workshopとの協業によるMoltenVKのオープンソース化を発表した[33][34][35]。これによりmacOS/iOSでもVulkanおよび開発ツールを無償で利用可能になった。SPIR-V/GLSLをMetal Shading Language (MSL) に変換するコマンドラインのツール「MoltenVKShaderConverter」も用意されている[36]。
GLFWはバージョン3.3にて、MoltenVKを経由することでmacOS上でVulkanをサポートするようになった[37]。
脚注
- ^ “Vulkan® 1.3.261 - A Specification”. クロノス・グループ (2023年7月28日). 2023年8月4日閲覧。
- ^ OpenGL 3Dの次世代規格の策定作業がKhronos Groupの指揮下に始まる…ハードウェア重視、マルチスレッド、共通シェーディング言語など - TechCrunch
- ^ vulkanはドイツ語で "火山" を意味し、英語のvolcanoに相当する。
- ^ Vulkan: the Official Name of glNext (Next Generation OpenGL) | Geeks3D
- ^ Khronos targets DirectX 12 with next-generation Vulkan API - ExtremeTech
- ^ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」を正式発表。OpenGL時代のしがらみを捨てた,スリムでハイエンドなAPIに - 4Gamer.net
- ^ SPIR - The first open standard intermediate language for parallel compute and graphics
- ^ [GDC 2015]Khronos,新世代グラフィックスAPI「Vulkan」でAMDの「Mantle」を採用 - 4Gamer.net
- ^ 「Android」、低オーバーヘッドのグラフィックスAPI「Vulkan」をサポートへ - CNET Japan
- ^ 新世代の低オーバーヘッドなグラフィックスAPI「Vulkan」,ついに正式始動 - 4Gamer.net
- ^ Qualcomm Announces Vulkan API Support on the Adreno 530 GPU | Qualcomm
- ^ Implementing Vulkan | Android Open Source Project
- ^ Vulkan on NVIDIA GPUs; Piers Daniell, Driver Software Engineer, OpenGL and Vulkan
- ^ Benefits of the Vulkan macOS SDK - LunarG
- ^ NDK Revision History | Android NDK | Android Developers
- ^ Google Developers Japan: Android Q ベータ版の概要
- ^ GLFW: Release notes | Release notes for 3.2 | New features in version 3.2 | Support for Vulkan
- ^ google-admin/vulkan-cpp-library
- ^ GPUOpen-LibrariesAndSDKs/V-EZ
- ^ V-EZ: AMD Releases New Easy-To-Use Vulkan Middleware, Simplified API Phoronix 2018年3月26日
- ^ GPUOpen-LibrariesAndSDKs/Anvil: Anvil is a cross-platform framework for Vulkan
- ^ NVIDIAGameWorks/Falcor: Real-Time Rendering Framework
- ^ GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator: Easy to integrate Vulkan memory allocation library
- ^ AMD's GPUOpen Posts New Vulkan Memory Allocator Phoronix 2017年6月19日
- ^ KhronosGroup/Vulkan-Hpp: Open-Source Vulkan C++ API
- ^ Vulkan bekommt offizielle API für C++ Golem.de 2016年7月25日
- ^ mono/VulkanSharp: Open source .NET binding for the Vulkan API
- ^ 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.
- ^ Open-Source Project Trying To Map Vulkan Onto Direct3D 12 & Metal Phoronix 2018年1月28日
- ^ Rostkatze: Vulkan Over Direct3D 12 With C++ Phoronix 2018年3月1日
- ^ MetalVK – Molten
- ^ MoltenVK – Molten
- ^ “クロノス、VulkanアプリケーションのAppleプラットフォームへのポーティングを実現する、 オープンソースを発表 - Press Release - Khronos Group”. jp.khronos.org. 2018年7月31日閲覧。
- ^ “Vulkan Applications Enabled on Apple Platforms” (英語). The Khronos Group. (2018年2月26日) 2018年7月31日閲覧。
- ^ 株式会社インプレス (2018年2月27日). “グラフィックスAPI「Vulkan」がmacOS/iOSで利用可能に” (日本語). PC Watch 2018年7月31日閲覧。
- ^ MoltenVK/MoltenVK_Runtime_UserGuide.md at master · KhronosGroup/MoltenVK
- ^ GLFW: Release notes | Release notes for version 3.3 | New features in version 3.3 | Support for Vulkan on macOS via MoltenVK
関連項目
- OpenGL
- OpenGL ES
- GLSL
- OpenCL
- Mantle (API)
- Metal (API)
- Direct3D 12
- en:Standard Portable Intermediate Representation