新しい低レベル API Vulkan がリリースされました。
・Khronos Releases Vulkan 1.0 Specification
これでようやく各プラットフォームの API が出揃ったことになります。対応は下記の通り。
Desktop Mobile ------------------------------------------------- Metal OS X iOS Direct3D 12 Windows 10 Vulkan Windows 7~, Linux Android
Vulkan 最大の特徴は Platform の枠を超えて利用できることです。Android, Linux だけでなく Windows でも動作します。
Windows にはすでに DirectX12 がありますが Windows 10 以降が必須となっています。Windows 7 でも使える Vulkan は Windows 環境でも十分魅力的に映るかもしれません。
すでに Beta 版ドライバが公開されているため、比較的すぐに試してみることができます。
現時点で対応している GPU は下記の通り。(分かる範囲のみ)
GeForce Kepler/Maxwell Windows, Linux, Android RADEON GCN Windows Intel HD Graphics Gen8~ Linux
GCN すべてに対応しているかどうかは未確認です。
Mobile GPU の場合 Vulkan に対応できるのは、予想通り OpenGL ES 3.1 以降になるようです。
Intel HD Graphics と低レベル API の対応
Metal Intel HD Graphics Gen 7~ Ivy Bridge 以降 Direct3D 12 Intel HD Graphics Gen 7.5~ Haswell 以降 Vulkan Intel HD Graphics Gen 8~ Broadwell 以降
Vulkan が動いているかどうかは vulkaninfo コマンドで調べることができます。
GeForce の場合 driver と同時にコマンドも install されました。
下記は GeForce GTX 960 の抜粋です。
=========== VULKAN INFO =========== Vulkan API Version: 1.0.3 ~ VkPhysicalDeviceFeatures: ========================= robustBufferAccess = 1 fullDrawIndexUint32 = 1 imageCubeArray = 1 independentBlend = 1 geometryShader = 1 tessellationShader = 1 sampleRateShading = 1 dualSrcBlend = 1 logicOp = 1 multiDrawIndirect = 1 drawIndirectFirstInstance = 1 depthClamp = 1 depthBiasClamp = 1 fillModeNonSolid = 1 depthBounds = 1 wideLines = 1 largePoints = 1 textureCompressionETC2 = 0 textureCompressionASTC_LDR = 0 textureCompressionBC = 1 occlusionQueryPrecise = 1 pipelineStatisticsQuery = 1 vertexSideEffects = 1 tessellationSideEffects = 1 geometrySideEffects = 1 shaderImageGatherExtended = 1 shaderStorageImageExtendedFormats = 1 shaderStorageImageMultisample = 1 shaderStorageImageReadWithoutFormat = 1 shaderStorageImageWriteWithoutFormat = 1 shaderUniformBufferArrayDynamicIndexing = 1 shaderSampledImageArrayDynamicIndexing = 1 shaderStorageBufferArrayDynamicIndexing = 1 shaderStorageImageArrayDynamicIndexing = 1 shaderClipDistance = 1 shaderCullDistance = 1 shaderFloat64 = 1 shaderInt64 = 1 shaderInt16 = 0 shaderResourceResidency = 1 shaderResourceMinLod = 1 alphaToOne = 1 sparseBinding = 1 sparseResidencyBuffer = 1 sparseResidencyImage2D = 1 sparseResidencyImage3D = 1 sparseResidency2Samples = 1 sparseResidency4Samples = 1 sparseResidency8Samples = 1 sparseResidency16Samples = 1 sparseResidencyAliased = 1 variableMultisampleRate = 1 iheritedQueries = 1 ~
ヘッダファイルやツール類は Open Source として GitHub からダウンロードする形になるようです。
Vulkan-LoaderAndValidationLayers に含まれています。
ビルドもできます。build には cmake と Python3 が必要。例えば glslang の場合下記の通り。
cd glslang mkdir build cd build cmake .. -G "Visual Studio 14 Win64" start glslang.sln
関連エントリ
・AEP を取り込んだ OpenGL ES 3.2 は機能面で Desktop に並ぶ, Android は Vulkan へ
・3D 低レベル API の現状 Direct3D 12/Metal
・CPU 負荷が低い 新しい 3D API
関連ページ
・3D Low overhead API (Low Level API) Metal/D3D12/Vulkan