「Vulkan」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
1行目: 1行目:
'''Vulkan'''(読み:ゔぁるかん)とは、米国[[LunarG]]社が開発した[[3DCG]]向けの[[API]]である。
+
'''Vulkan'''(読み:ゔぁるかん)とは、米国[[LunarG]]社が開発した[[3DCG]]向けの[[API]]である。現在はLunarGから[[クロノスグループ]]に寄贈され表向きは同団体が管理している。
現在はLunarGから[[クロノスグループ]]に寄贈され、同団体が管理している。
 
  
 
[[Vulkan SDK]]は[[LunarG]]のサイトから[[ダウンロード]]できる。
 
[[Vulkan SDK]]は[[LunarG]]のサイトから[[ダウンロード]]できる。
  
 
==概要==
 
==概要==
大雑把にいえば[[DirectX 12]]や[[Metal]]の[[パクリ]]である。
+
大雑把にいえばVulkanは[[Direct3D 12]]や[[Metal]]と同等品である<del>の[[パクリ]]である</del>。
  
もともとは[[Valve]](の子会社の[[LunarG]])が[[Source Engine]]および[[SteamOS]]を開発するにあたり、あまりに[[OpenGL]]が絶望的な状況であるため、その代替品として開発を進めていたものである。
+
もともとは[[Valve]](の子会社の[[LunarG]])が[[Source Engine]]および[[SteamOS]]を開発するにあたり、あまりに[[OpenGL]]が絶望的な状況であるため、その代替品として開発を始めたものである。
 +
* OpenGLでムカつくこと
 +
*: https://cpplover.blogspot.com/2014/05/opengl.html
 +
* OpenGLドライバー品質の実情
 +
*: https://ezoeryou.github.io/blog/article/2014-05-19-The-Truth-on-OpenGL-Driver-Quality.html
  
*
 
  
後に[[Google]]が[[Android]]への[[Vulkan]]の採用を決め、[[LunarG]]から[[派遣社員]]を雇い入れたことから、現在は「Googleの意向」が非常に強く反映されている。
+
後に[[Google]]が[[Android]]への[[Vulkan]]の採用を決め、[[LunarG]]から[[派遣社員]]を雇い入れたことから、現在は「Googleの意向」が非常に強く反映されている。[[SteamOS]]も[[Steam Machine]]も大流行には至らなかったこともあり、実質的にVulkanは[[Android]]専用[[API]]となりつつある。
  
OpenGLの各種APIといえば頭文字「gl」であったがVulkanでは頭文字「vk」になった。
+
[[OpenGL]]の各種APIといえば頭文字「gl」であったがVulkanでは頭文字「vk」になった。
  
OpenGLからの大きな違いとしては[[パイプライン]]の概念が登場して、なんでもかんでも[[シェーダー]]で処理するようになっている。Vulkanでは直線や円を描くなど自前で壮大な[[シェーダー]]を用意して処理しなければならない。
+
[[OpenGL]]からの大きな違いとしては[[パイプライン]]の概念が登場し、なんでもかんでも[[シェーダー]]で処理するようになっている。Vulkanでは直線や円を描くなどちょっとしたことでも自前で壮大な[[シェーダー]]を用意して処理しなければならない。
 
 
[[DirectX12]]や[[Metal]]と比較するとアホみたいに複雑なのが特徴。
 
前準備、初期化処理からして嫌がらせレベル。
 
  
 
==シェーディング言語==
 
==シェーディング言語==
35行目: 34行目:
  
 
=== Linux ===
 
=== Linux ===
しらん。もともとは[[Linux]]ベースの[[SteamOS]]で[[OpenGL]]を置き換える目的で開発されたものなので一番まともに動くはずだが試してはいない。
+
しらん。もともとは[[Linux]]ベースの[[SteamOS]]で[[OpenGL]]を置き換える目的で開発されたものなので一番まともに動くはずだが試してはいない。[[Linux]]でVulkanを試すなら[[SteamOS]]を入れるのが一番手っ取り早いと思われる。
 
 
LinuxでVulkanを試すなら[[SteamOS]]を入れるのが一番手っ取り早いと思われる。
 
  
 
===Android===
 
===Android===
48行目: 45行目:
 
===macOS===
 
===macOS===
 
[[macOS]]では[[MoltenVK]]を利用する。とりあえず動くのは確認した。
 
[[macOS]]では[[MoltenVK]]を利用する。とりあえず動くのは確認した。
 
 
*[[MacにMoltenVKを入れてVulkanを使ってみる]]
 
*[[MacにMoltenVKを入れてVulkanを使ってみる]]
  
 
==関連項目==
 
==関連項目==
 
+
*[[Direct3D 12]]
*[[DirectX12]]
 
 
*[[Metal]]
 
*[[Metal]]
 
*[[Vulkan]]
 
*[[Vulkan]]

2020年6月24日 (水) 08:31時点における版

Vulkan(読み:ゔぁるかん)とは、米国LunarG社が開発した3DCG向けのAPIである。現在はLunarGからクロノスグループに寄贈され表向きは同団体が管理している。

Vulkan SDKLunarGのサイトからダウンロードできる。

概要

大雑把にいえばVulkanはDirect3D 12Metalと同等品であるパクリである

もともとはValve(の子会社のLunarG)がSource EngineおよびSteamOSを開発するにあたり、あまりにOpenGLが絶望的な状況であるため、その代替品として開発を始めたものである。


後にGoogleAndroidへのVulkanの採用を決め、LunarGから派遣社員を雇い入れたことから、現在は「Googleの意向」が非常に強く反映されている。SteamOSSteam Machineも大流行には至らなかったこともあり、実質的にVulkanはAndroid専用APIとなりつつある。

OpenGLの各種APIといえば頭文字「gl」であったがVulkanでは頭文字「vk」になった。

OpenGLからの大きな違いとしてはパイプラインの概念が登場し、なんでもかんでもシェーダーで処理するようになっている。Vulkanでは直線や円を描くなどちょっとしたことでも自前で壮大なシェーダーを用意して処理しなければならない。

シェーディング言語

OpenGLと異なりVulkanでは「SPIR-V」という中間コードコンパイルする方式が採用されている。

GoogleDirectX Shader Compilerを魔改造した結果、HLSLからSPIR-Vを出力できるようになった。このためVulkanではOpenGLGLSLDirectXHLSLのどちらも利用できる。

利用

Windows

しらん。

Linux

しらん。もともとはLinuxベースのSteamOSOpenGLを置き換える目的で開発されたものなので一番まともに動くはずだが試してはいない。LinuxでVulkanを試すならSteamOSを入れるのが一番手っ取り早いと思われる。

Android

Androidはだいたいいける。というかVulkanがOS標準なのはAndroidくらいであり、実質的にVulkanはAndroid専用APIだ。そもそもAndroid以外でVulkanを使っているという話は聞いたことがない。

ただしAndroid SDKに付属のエミュレーターでは動かないぞ。公式エミュレーターではvkEnumeratePhysicalDevicesメソッドを呼び出しても何も返ってこない。残念。

Android 10からは「Vulkan対応」が必須要件となった。

macOS

macOSではMoltenVKを利用する。とりあえず動くのは確認した。

関連項目