Awesome Vulkan
Vulkanを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
ハードウェア対応
SDK
IHVドキュメント
- AMD
- Vulkan barriers explained
- Vulkan Fast Paths
- Let Your Game Shine – Optimizing DirectX 12 and Vulkan Performance with AMD CodeXL
- D3D12 & Vulkan: Lessons Learned
- Say Hello to a New Rendering API in Town!
- Vulkan Renderpasses
- Performance tweets series: Barriers, fences, synchronization
- Using the Vulkan™ Validation Layers
- Most common mistakes in Vulkan apps
- Vulkan Device Memory
- NVIDIA
- Vulkan Device-Generated Commands
- Getting Vulkan Ready For VR
- GPU-Driven Rendering
- GDC 16 - High-performance, Low-Overhead Rendering with OpenGL and Vulkan
- GDC 16 - Vulkan and NVIDIA – The Essentials
- Engaging the Voyage to Vulkan
- Vulkan Shader Resource Binding
- Vulkan Memory Management
- OpenGL like Vulkan
- Transitioning from OpenGL to Vulkan
- Siggraph 15 talk - Vulkan on NVIDIA GPUs
- Arm
- Intel
- Imagination
- Samsung
- Epic
- Khronos
- LunarG
- Vulkan SDK
- Vulkan SDK Version Compatibility
- Introducing the New Vulkan Configurator
- Unified Validation Layer for Vulkan
- Vulkan Synchronization Validation Quick Start Guide
- Guide to Vulkan Synchronization Validation
- Vulkan GPU-Assisted Validation
- Automatic RelaxedPrecision Decoration and Conversion in Spirv-Opt
- SPIR-V Legalization and Size Reduction with spirv-opt
- All White Papers
- Community
チュートリアル
- How to Learn Vulkan - Vulkanを学ぶ方法についてのメタ投稿
- I Am Graphics And So Can You - グラフィックス分野に新規に取り組む人々向けのVulkanに関するブログ風チュートリアル
- Vulkan Game Engine Tutorial - ブレドン・ゲーラのYouTubeで公開されたVulkanゲームエンジン作成シリーズチュートリアル
- Kohi Game Engine Series - “Vulkanゲームエンジンシリーズ、C言語とVulkanを使ってから地からゲームエンジンを作成する”
- Moving to Vulkan (Khronos UK May16)
- jhenriques’s tutorial
- Lunarg’s tutorial
- Mike Bailey’s Vulkan Page - 広範なVulkanコーススライドを提供。[CC BY-NC-ND 4.0]
- Qualcomm Video Tutorial Series - モバイルデバイス向けVulkanに重点を置いている
- Raw Vulkan - Vulkanアプリケーションを地からプログラミングする方法の概要
- Siggraph
- An overview of next-generation graphics APIs - Vulkan、D3D12などについての解説
- Tutorial by Overv および its github repository。[CC BY-SA 4.0]
- vulkan-sxs - Vulkan APIをステップバイステップに解説し、vulkan-sync - Vulkanの実行依存性要件をより正確な形で再表現。[MIT]
- Vulkan in 30 minutes - バルドゥルクによるもの
- Vulkan Demos and Tutorials。[MIT]
- Vulkan Guide。[MIT]
- Vulkan Lecture Series - ウィーン工科大学のコンピュータグラフィックス研究ユニットのヨハネス・アンテルグゲンベーグの大学講義。Vulkanの基本および高度なテーマをカバー:Vulkanの基本、スワップチェーン、リソースとディスクリプタ、コマンドとコマンドバッファ、パイプラインと段階、リアルタイムレイトレーシング、および同期。
アプリ
- The Talos Principle - クローテームによるもの
- Dota2 - ヴァルヴによるもの
- Basemark - バスマーケットで
- GFXBench 5 - キショントイによって。
- ProtoStar - エピックが開発した、アンリアルエンジン4技術を用いた作品。
- DDraceNetwork - 協働2Dプラットフォームゲーム。オプションの Vulkan backend。 - zlib website
- Doom - by id Software.
- vkQuake - クエーカーSpasmに基づくVulkan版クエーカー。[GPL]
- vkQuake2 - id Softwareのクエーカー2 v3.21(Vulkanサポート)(WindowsおよびLinux)[GPL]
- q2vkpt - リアルタイムパストラッカーVKPTがq2pro Quake 2クライアントに統合されたもの。 [gpl]
- Linux port of SteamVR - SteamVRはVulkan APIに基づいて構築されている。
- 3DMark - 3DMark APIオーバーヘッドテスト.
- Q2RTX - NVIDIAがQuake IIに実装したRTXレイトレーシング。 [LICENSE]
サンプル
- Khronos Vulkan samples [LICENSE]
- Sascha Willems’s samples そして Deferred rendering of Sponza と、彼の Khronos_meetup_munich についての話
- (Incomplete) Sascha Willems’s samples port Kotlinに
- Sascha Willems’s Vulkan-glTF-PBR - 物理ベースレンダリングをVulkanでglTF 2.0モデルを使用して実現。 [MIT]
- Vulkan Best Practice for Mobile Developers Samples
- nvpro-samples - NVIDIA DesignWorksのサンプル。 [LICENSE]
- gl_vk_chopper - シンプルなVulkanレンダリング例.
- gl_vk_threaded_cadscene - OpenGLとVulkanを、CADシーンのレンダリングにおけるさまざまな技術と the blogについて比較。
- gl_vk_bk3dthreaded - Vulkanサンプルで3Dを’worker-threads’を使用してレンダリング。
- gl_vk_supersampled - Vulkanサンプルで高品質のスーパーサンプリングレンダリングを示す。
- NVIDIA GameWorks Samples - GameWorksのクロスプラットフォームグラフィックスAPIサンプル。 [LICENSE]
- LunarG’s Samples
- vkcube - krhによる’vkcube’サンプルは、X、waylandおよびVTコンソールでのDRM/KMSに対応している。
- Stardust from Intel - スターダストサンプルアプリケーションは、VulkanグラフィックスAPIを用いてアニメーションされた粒子の雲を効率的にレンダリングする。 [LICENSE]
- Vulkan Quake port based on QuakeSpasm。
- C# Samples - OvervのチュートリアルをSharpVk[MIT]に移植したもの。
- Vulkan-Forward-Plus-Renderer - VFPR - a Vulkan Forward Plus Renderer. [MIT]
- Laugh Engine - リアルタイムPBRレンダラーのVulkan実装。
- tinyrenderers - VulkanおよびD3D12レンダラーのシングルヘッダー実装。
- TLVulkanRenderer - リアルタイム透過性に関するマスター論文のためのシンプルなVulkanベースレンダラー。[CC BY-SA 4.0]
- Vulkan-Hpp Samples - Sascha Willemsの優れたVulkanサンプルをフォークしたもので、Vulkan-Hppを使用している。
- SDF Font Demo - Vulkanで符号距離を推定してテキストをレンダリング。[MIT]
- vulkantoy - Shadertoyの画像シェーダーテストアプリケーション(Vulkan版)。[MIT]
- GL_vs_VK - OpenGLとVulkanAPIのパフォーマンス比較。[MIT]
- Vulkan Basic Graphics Samples - Magmaライブラリを使用して書かれたシンプルなグラフィックスサンプルのコレクション。
- Simple RTX Vulkan raytracing tutorials。[MIT]
- Ray Tracing In One Weekend (Vulkan RTX) - Peter Shirleyの『Ray Tracing in One Weekend』の書籍をVulkanおよびNVIDIAのRTX拡張を使用して実装したもの。
- Gears VK - Gears VKは、有名な”gears”デモをVulkan/Android/Linuxに大幅に変更したポート。[MIT]
- Hello triangle, Vulkanレイトレーシング拡張に基づくもの。[MIT]
- Simple Animation Blender - Vulkanをグラフィカルバックエンド、ImGuiをGUIとして使用したリアルタイム1Dアニメーションブレンドとプレイヤー。[MIT]
ライブラリ
-
2D
- imgui - 即時モードグラフィカルユーザーインターフェース。[MIT]
- Skia - Googleの2Dグラフィックスライブラリには、Vulkan backendがあり、そのクロスプラットフォームsample applicationでのデモンストレーションが、独自のwindow libraryによって行われている。[BSD 3-clause] website
- VKVG - Vulkan 2Dグラフィックスライブラリ。APIはCairoグラフィックスライブラリと同様のパターンを採用しているが、新しい関数を提供。
-
Compute
-
Low Level
- Vulkan Memory Allocator - AMDから提供される簡単なVulkanメモリ割り当てライブラリ。[MIT]
- [VulkanMemoryAllocator-Hpp] (https://github.com/malte-v/VulkanMemoryAllocator-Hpp) - C++ Bindings for VMA, like Vulkan-HPP
- Fossilize - さまざまな永続Vulkanオブジェクトタイプのためのシリアライズフォーマット。[MIT]
- vk-bootstrap - Vulkan開発をスムーズに進めるためのC++ユーティリティライブラリ。インスタンス、物理デバイス、デバイス、スワップチェーンの自動生成を実現。[MIT]
- Google’s vulkan-cpp-library - C++11を用いたVulkan抽象化ライブラリ。メモリ、リソース管理、型およびスレッドセーフ性、システム独立性を提供。[Apache]
- FrameGraph - フレームをタスクグラフとして表現するVulkan抽象化レイヤー。[BSD 2-clause]
- V-EZ - プロフェッショナルワーキングステーション向けのVulkan API向け軽量ミドルウェアレイヤー。[MIT]
- Vookoo - Vookooは、Vulkanグラフィックスデータ構造の構築および更新を支援する、依存関係のないユーティリティのセット。[MIT]
- vpp - パフォーマンスに焦点を当て、シンプルなインターフェースを提供する現代C++ベースのVulkan抽象化。[MIT]
- VulkanSceneGraph - Vulkan/C++17シーングラフプロジェクト。OpenSceneGraphの継承プロジェクト。
- Vulkan-WSIWindow - マルチプラットフォームライブラリ。Vulkanウィンドウを作成し、入力イベントを処理。[Apache License 2.0]
- Screen 13 - Rust向けに使いやすいVulkanレンダグラフ。[MIT]
- Vulkan Memory Allocator - AMDから提供される簡単なVulkanメモリ割り当てライブラリ。[MIT]
-
Frameworks, Engines, Higher Level Rendering
- Acid - 高速なC++17 Vulkanゲームエンジン。[MIT]
- AMD’s Anvil - マルチプラットフォーム向けのVulkanフレームワーク。[LICENSE]
- Auto-Vk - Vulkan-Hpp上に構築された、現代C++向けのVulkan便利かつ生産性の高いレイヤー。TU Wienのコンピュータグラフィックス研究部門による開発。[MIT]
- Auto-Vk-Toolkit - Auto-Vkを基盤としたC++フレームワーク。急速なプロトタイピング、研究、教育に適した開発。TU Wienのコンピュータグラフィックス研究部門による開発。[MIT(フレームワークコード)]
- bgfx - クロスプラットフォーム、グラフィックスAPIに依存しない、「自社エンジン/フレームワークをもって来」スタイルのレンダリングライブラリ。 [BSD-2-clause]
- bsf - リアルタイムグラフィックアプリケーション開発用の現代C++14ライブラリ。[MIT]
- Cinder および the story behind。[BSD]
- DemoFramework - NXP GTEC C++11クロスプラットフォームデモフレームワーク。Vulkan、OpenGL ES、OpenVX、OpenCL、OpenVGおよびOpenCV向けの多くのサンプルを含む。 [BSD-3-clause]
- Diligent Engine - OpenGL/GLES、Direct3D11/12およびVulkanをサポートする現代的なクロスプラットフォーム低レベルグラフィックスライブラリ。[Apache License 2.0]
- Falcor - NVIDIAによるリアルタイムレンダリングフレームワーク。主にDX12をサポートし、Vulkanについては実験的サポートを提供。[BSD 3-clause]
- glfw および the guide。 [LICENSE]
- Intrinsic Engine - IntrinsicはVulkanベースのクロスプラットフォームグラフィックスおよびゲームエンジン。[Apache License 2.0]
- Introductory Vulkan sample by GPUOpen。[MIT]
- liblava - 現代的なC++で構成された使いやすいフレームワーク。[MIT]
- Logi - 軽量なオブジェクト指向のVulkan抽象化フレームワーク。[BSD 2-clause]
- Lugdunum - Vulkanと現代的なC++14を用いた現代的なクロスプラットフォーム3Dレンダリングエンジン。[MIT]
- Nabla - Vulkan、OptiXおよびCUDAの相互操作を可能にするモジュラーレンダリングライブラリおよびフレームワーク(PC/Linux/Android対応)。[Apache License 2.0]
- openFrameworks - 最も有名なC++クリエイティブコーディングフレームワーク。[MIT]
- PowerVR SDK - VulkanおよびGLES開発を加速するC++クロスプラットフォーム3DグラフィックスSDK。 [LICENSE]
- Pumex - クロスプラットフォームVulkanレンダラー。フレームグラフとシンプルなシーングラフを実装。複数の表面に同時にレンダリング可能。[MIT]
- SDL - SDL_vulkan.hにクロスプラットフォームVulkanグラフィックスサポートを追加。[zlib]
- small3d, ティニーVulkanベースのC++クロスプラットフォームゲーム開発フレームワーク [BSD 3-clause]
- Spectrum - Vulkanを中心とした開発中フレームワークおよび抽象化層。
- Tephra - 現代的なC++17グラフィックスおよびコンピュートライブラリ。VulkanとOpenGLのような高度なAPIの間のギャップを埋める。[MIT]
- The-Forge - DirectX 12、Vulkan、macOS Metal 2 のレンダリングフレームワーク。[Apache License 2.0]
- VKFS - クロスプラットフォームで使いやすいC++フレームワーク。Vulkanの初期化を迅速に行い、準備済み環境を提供。基本的なVulkanオブジェクトに対する高度な抽象化を提供。
- Vulkan Launchpad - Windows、macOS、Linux向けのVulkanフレームワーク。特にVulkanの初心者に適しており、ウィーン大学のコンピュータグラフィックス研究ユニットで使用。[MIT]
- Vulkan Launchpad Starter - 追加機能とアセットを含むスタートテンプレート。[LICENSE]
-
Other API Interop and Implementations
- visor - Vulkan Ignoble Software レンダラ。[MIT]
- VulkanOnD3D12 - D3D12用のVulkan API。[Apache License 2.0]
- rostkatze - D3D12の上に構築されたVulkanのC++実装 🐈[Apache License 2.0]
- VK9 - Vulkanを使用したDirect3D 9互換層
- VUDA - ヘッダーのみのライブラリで、CUDA Runtime APIインターフェースを提供。[MIT]
- clspv - OpenCL Cの一部をVulkanコンピュートシェーダに変換するプロトタイプコンパイラ。[Apache License 2.0]
- MoltenVK - iOSおよびmacOS上でVulkanを実行。[Apache-2.0]
- Zink - Vulkanの上に構築されたOpenGL実装、Mesaプロジェクトの一部。[MIT]
- glo / OpenGL Overload - Vulkanの上に構築されたOpenGL実装。
- gfx-portability - MetalおよびD3D12向けのVulkanのポータビリティ実装、gfx-rsに基づく。
-
Raytracing
- Quartz - 物理ベースのVulkan RTXパストレイサーおよび宣言型ES7のようなシーン記述言語。[LGPL-3.0]
-
Scientific
-
Shaders
- glslang - glslをspirvにコンパイルするためのライブラリ [BSD 3-Clause]
- SPIRV-Cross - spirvのリフレクションを実現し、Vulkanパイプラインレイアウトの作成を簡易化するライブラリ [Apache-2.0 ライセンス]
-
Outdated ⚠️
バインディング
- ash - ルスト向けのヴァルカンバインディング。[MIT]
- gfx-rs - ルスト向けの低オーバーヘッドヴァルカン類のGPUAPI。[Apache License 2.0]
- libvulkan.lua - ルアーバインディングによるヴァルカン。
- dvulkan - 自動生成されたDバインディングによるヴァルカン。
- ErupteD - 別の自動生成されたDバインディングによるヴァルカン。
- flextGL - 最小限のヴァルカンヘッダー/ローダー生成器および the blog post について。
- Silk.NET - C#向けのヴァルカンおよびその他のバインディング。[MIT]
- vulkan - ハスケル向けのヴァルカンおよびヴァルカンメモリアロケータバインディング。[BSD-3-Clause]
- nvk - JavaScript向けのヴァルカンバインディング。[MIT]
- racket-vulkan - ラケット向けのヴァルカンバインディングおよび detailed implementation notes。[MIT]
- Vulkan-hpp NVIDIAから発展したオープンソースヴァルカンC++APIおよび the blog について。
- VulkanSharp - C#向けのヴァルカンバインディング。[MIT]
- Vulkano - 安全かつ豊かなルストによるヴァルカンAPIのラッパー。[MIT]
- LWJGL - ライトウェイトなJavaゲームライブラリ3にはヴァルカンバインディングがある。[BSD]
- SharpVk - Linq-to-SPIR-Vおよび NuGet package を用いたC#向けのヴァルカンバインディング。[MIT]
- vulkan - CFFIで生成された究極のPythonバインディング。[Apache Licence 2.0]
- vulkan-go - Go向けのヴァルカンバインディング。[MIT]
- PasVulkan - ヴァルカンバインディングおよびオブジェクトパascal向けのハイレベルラッパーライブラリ。[Zlib]
- vulkan-zig - Zig向けのヴァルカンバインディング生成器。[MIT]
- VK²Kotlinによるヴァルカンラッパー:コードの表現力と安全性がグラフィックパワーアップ。[Apache License 2.0]
- Vortice.Vulkan - .NET Standard 2.0 および .NET5 C# バインディング [MIT]
- Raw Node.js Vulkan API - Node.JS 用の新しい Vulkan バインディング。LWJGL-3 または NVK に類似。
- Deno Vulkan - Deno 用の Vulkan API バインディング。[Apache ライセンス 2.0]
ツール
- Nsight™ Visual Studio Edition 5.2+。
- LoaderAndValidationLayers - KhronosGroup によるもの。[Apache ライセンス 2.0]
- renderdoc - baldurk による、独立したグラフィックスデバッグツール。[MIT]
- RDCtoVkCpp - RenderDoc の Vulkan キャプチャをコンパイル可能かつ実行可能な C++ コードに変換。[MIT]
- VulkanTools - LunarG のツール(レイヤーおよび設定ツール)。[Apache ライセンス 2.0]
- VKtracer - Vulkan 用のユニバーサルかつ使いやすいプロファイラー。
- CodeXL - CodeXL がオープンソース化。[MIT]
- Qualcomm Adreno GPU Tools - サンプル、Adreno 推奨レイヤー、Adreno GPU 用のベストプラクティスドキュメント。
- Qualcomm Snapdragon Profiler - Adreno GPU 用の Vulkan イベント記録およびフレームキャプチャを含む。
- Arm Mobile Studio - Arm Graphics Analyzer を含み、グラフィックスパフォーマンスの問題を簡単にトレース可能であり、Arm Streamline パフォーマンスアナライザーを含み、システム全体のパフォーマンスを把握し、CPU および GPU のボトルネックを迅速に特定できる。
- Open Capture and Analytics Tool (OCAT) - D3D11、D3D12、および Vulkan 用の FPS オーバーレイとパフォーマンス測定を提供。[MIT]
- gapid - グラフィックスAPIデバッガー。Android OpenGL ES および Vulkan アプリケーションのトレースと再実行が可能。[Apache License 2.0]
- Arm - PerfDoc - Mali アプリケーション開発ベストプラクティスドキュメントに対するバリデーションレイヤー。[MIT]
- glsl_trace - Vulkan および OpenGL 用のシェーダデバッグとプロファイリングライブラリ。[MIT]
- MangoHud - Vulkan および OpenGL 用の FPS、温度、CPU/GPU ロードをモニタリングするオーバーレイ。[MIT]
書籍
- Introduction to Computer Graphics and the Vulkan API Kenwright による — Vulkan API を用いて、基礎から実践的にコンピュータグラフィックスの興味深いテーマに導入する。
- Learning Vulkan - Parminder Singh による — よく理解できる例を用いて、Vulkan API およびそのプログラミング技術に着手する。
- Vulkan Cookbook- Pawel Lapinski による — Vulkan API を最大限に活用するための幅広いグラフィックスプログラミングおよびGPU計算手法を探索。
- Vulkan Programming Guide - Graham Sellers および John Kessenich による - 多くの分野における強力な3D開発技術を紹介します。
- Mastering Graphics Programming with Vulkan - マルコ・カストリナとガブリエル・サソネが、初原理から最先端技術までを経て構築した現代的なレンダリングエンジンを構築する。
論文
- The Road to Vulkan: Teaching Modern Low-Level APIs in Introductory Graphics Courses ヨハネス・アンテルグゲンベーカー、ベルナルド・ケルブ、ミハエル・ウィマーによる、Eurographics 2022 - 教育論文
Khronos
- Specification
- Vulkan 1.0 Core API (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.0 Core API + Khronos-defined Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.0 Core API + all registered Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.1 Core API (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.1 Core API + Khronos-defined Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.1 Core API + all registered Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.2 Core API (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.2 Core API + Khronos-defined Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.2 Core API + all registered Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.3 Core API (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.3 Core API + Khronos-defined Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Vulkan 1.3 Core API + all registered Extensions (Chunked HTML) (PDF) (Single-file HTML)
- Quick Reference Sheets
- Conformance Tests (CTS)
- Conferences and Presentations
- GDC 2016 Presentations
- 2016 UK Chapter: Moving to Vulkan
- SIGGRAPH 2016 BOF - Vulkan
- SIGGRPAH 2016 Best Practices Roundtable
- 2016 Vulkan DevDay UK
- 2016 Vulkan DevDay Seoul
- 2017 Vulkan DevU Vancouver
- 2017 Vulkan Loader Webinar
- SIGGRAPH 2017 BOF - Vulkan
- 2018 Vulkan Montreal Dev Day
- 2018 Vulkanised!
- SIGGRAPH 2018 BOF - Vulkan
コミュニティ
関連リスト
- awesome - 素晴らしいリストの厳選リスト。
- awesome-opengl - 素晴らしいOpenGLライブラリ、デバッガーやリソースの厳選リスト。
- gamedev - ゲーム開発に関する素晴らしいリスト。
- graphics-resources - グラフィックプログラミング向けリソース一覧
- awesome-d3d12 - 厳選された素晴らしい D3D12 ライブラリ、デバッグツールおよびリソース一覧
ライセンス
この作品はCreative Commons Attribution 4.0 International Licenseのライセンスで許可されています。
コントリビューション
Please see CONTRIBUTING for details.
