遅くなりましたが DirectX 12 の対応状況に Vega 56 のデータを追加しました。Vega (GCN 5) は FEATURE_LEVEL 12_1 に対応しており、ROV 等 D3D12 の機能を搭載しています。ただし ShaderModel は 5.1 のままでした。

Direct3D 12 (DirectX 12) GPU の対応

GeForce, Intel HD Graphcs のテスト結果も更新しています。新しいドライバでは GeForce の Maxwell, Pascal も ResourceBindingTier が Tier 3 に上がっていることがわかりました。また ShaderModel 6.0 (WaveOps == true) にも対応しているようです。

GPU Driver FeatureLevel ShaderModel
RADEON Vega GCN 5 18.3 12_1 5.1
RADEON RX Polaris GCN 4 18.3 12_0 5.1
RADEON R3/R7/R9 GCN 2 18.2 12_0 5.1
GeForce GTX 1000 Pascal 388.13 12_1 6.0
GeForce GTX 900 Maxwell 388.13 12_1 6.0
GeForce GTX 750Ti Maxwell 388.43 11_0 6.0
Skylake Intel HD Graphcis Gen 9 12_1 6.1
Broadwell Intel HD Graphcis Gen 8 11_1 5.1
Haswell Intel HD Graphcis Gen 7.5 11_1 5.1

Intel HD Graphcis も Skylake 世代からは ShaderModel 6.1 対応となっています。結果は今後ドライバの更新で変わる可能性があります。


関連ページ
Direct3D 12 (DirectX 12) GPU の対応

関連エントリ
Direct3D 12 GPU GeForce GTX 1070 Pascal と RADEON RX 480 Polaris


ついに GeForce GTX400/500 (Fermi) 世代の GPU が Direct3D 12 に対応したようです。2年間待ちました。手持ちの GeForce GTX560 Ti で早速プログラムを走らせてみましたが問題なく動いています。

PC Watch: NVIDIAの最新ドライバでFermi世代のGPUがDirectX 12対応に

FeatureLevel は 11_0 なので基本的な機能は Kepler 世代と大きな違いはないようです。ただし ResourceBinding Tire が 1 なので、Shader から一度に参照できるリソースの個数に上限があります。低レベル API のメリットの一つがリソース数制限の撤廃ですが、Tier 1 の場合は D3D11 と変わらないことになります。

詳細は下記ページよりどうぞ。表に GeForce GTX 560 Ti を追加しました。

Direct3D 12 (DirectX 12) Windows 詳細

これで GeForce は Direct3D 11 世代の GPU がすべて DirectX12 対応となりました。なお Fermi は Vulkan には対応していないようです。

Direct3D 11 世代 GPU の対応 API まとめ↓ (Vulkan は Windows の場合のみ)

GPU FL Tier D3D12 Vulkan Metal GL
GeForce GTX 400/500 (Fermi) 11_0 1 Y N N 4.5
GeForce GTX 600/700 (Kepler) 11_0 2 Y Y Y 4.5
GeForce GTX 750 (Maxwell1) 11_0 2 Y Y Y 4.5
GeForce GTX 900 (Maxwell2) 12_1 2 Y Y Y 4.5
GeForce GTX 1000 (Pascal) 12_1 2 Y Y Y 4.5
RADEON HD 5000 11_0 - N N N 4.5
RADEON HD 6000 11_0 - N N N 4.5
RADEON HD 7000 (GCN 1.0) 11_1 3 Y Y Y 4.5
RADEON Rn 200/300 (GCN 1.1) 12_0 3 Y Y Y 4.5
RADEON R9 285/380 (GCN 1.2) 12_0 3 Y Y Y 4.5
RADEON RX 400/500 (GCN Polaris) 12_0 3 Y Y Y 4.5
Intel HD Graphics (Gen 7) Ivy Bridge 11_0 - N N Y 4.0
Intel HD Graphics (Gen 7.5) Haswell 11_1 1 Y N Y 4.3
Intel HD Graphics (Gen 8) Broadwell 11_1 1 Y N Y 4.4
Intel HD Graphics (Gen 9) Skylake 12_1 3 Y Y Y 4.4
・FL = Feature Level

D3D11 世代で D3D12 に対応していない GPU は Intel HD Graphics 4000 系 (Ivy Bridge) と GCN より前の RADEON になります。そもそも D3D12 や Vulkan といった低レベル API の元になっているのは GCN 向けに作られた Mantle なので、AMD の場合は仕方がないともいえます。

GPU ごとの対応 API については、下記のページも参照してください。

GPU 世代対応表

Windows の更新とともに Direct3D 12 にも修正が入っているようです。Creators Update の 1703 では ID3DDevice2 が追加されています。Version の違いをまとめてみました。

Windows Version Windows SDK D3D12Device Interface
Windows 10 1703 10.0.15063.0 ID3D12Device2
Windows 10 1607 10.0.14393.0 ID3D12Device1
Windows 10 1511 10.0.10586.0 ID3D12Device
Windows 10 1507 10.0.10240.0 ID3D12Device


関連エントリ
2015/06/29: Direct3D 12 (DirectX12) GPU と API の対応表
2015/06/26: DirectX 12 (Direct3D 12) と GPU の対応

関連ページ
Direct3D 12 (DirectX 12) Windows 詳細
GPU 世代対応表


他の CPU の結果も追加してみました。

CPU Clock Core/Thread RAM Storage 1回目 2回目
(1) Ryzen 7 1800X (Zen) 3.6GHz 8 / 16 32GB SSD 20分 19分
(2) Core i7-6700K (Skylake) 4.0GHz 4 / 8 32GB SSD 27分 26分
(3) Core i7-4790K (Haswell) 4.0GHz 4 / 8 16GB HDD 39分 32分
(4) A10-7870K (Steamroller) 3.9GHz 4 / 4 16GB SSD 74分 82分
(5) Core i5-3210M (IvyBridge) 2.5GHz 2 / 4 16GB SSD 86分 85分
(6) Athlon 5350 (Jaguar) 2.0GHz 4 / 4 16GB HDD 204分 168分
(7) Celeron N3150 (Airmont) 1.6GHz 4 / 4 16GB HDD 236分 184分

すべて Windows 10 x64。GitHub 版 UE4 4.15.2 のビルド時間の比較です。Development Editor 指定で Unity Build が有効な状態です。二回とも Clean 後に Build しています。2回目はある程度キャッシュに乗った状態を想定しています。1回目、2回目とも数値が小さい方が高速です。

HDD では 1回目と 2回目の差が大きく開いており、(7) では 52分もの差があります。SSD は 1回目と 2回目の差がほぼありません。初回から RAM 上にキャッシュされた状態とほぼ同等のパフォーマンスが出ていることになります。


関連エントリ
AMD CPU Ryzen とコンパイル時間の比較



HTC Vive の Vive Tracker 購入しました。

null

Controller は HMD と Bluetooth で通信しますが、認識出来るのは最大 2個までです。3個目以上は有線で接続する必要がありました。

Vive Tracker には USB ドングルが付属しており、PC と直接無線でも通信できるようになっています。ペアリング操作は Vive Controller と全く一緒です。そのせいか、先に Controller の電源が入っていないと HMD 側にペアリングされてしまうことがあります。

・先に Vive Controller の電源を 2個とも入れておく (Tracker が付属のドングルと対応付けられるように)
・複数の Tracker をペアリングする時は、他の Tracker の USB ドングルを外しておく

Controller と違い形状が安定しており固定しやすくなっています。Base Station でよく使う三脚ネジがそのまま使えます。置いたときに軸が水平になるのも Controller との違いで、位置を合わせやすくなりました。とりあえずクロマキー合成の時の位置検出に活用しています。


関連エントリ
VR 対応 GPU の値段と Vive Controller 置き場
HTC Vive (VR ヘッドマウントディスプレイ) の接続
HTC Vive のセットアップと PC スペック、遅い PC で動くかどうか


比較的安価ながら多コアの CPU、AMD Ryzen はコンパイルの長い長い待ち時間を減らしてくれるかもしれません。Ryzen PC を手に入れたので実際に比較してみました。Skylake Core i7-6700K で 27分かかる UE4 のビルドが Ryzen 1800X ではおよそ 20分まで短縮しています。

CPU Clock Core/Thread RAM Storage 1回目 2回目
(1) Core i7-4790K (Haswell) 4.0GHz 4 / 8 16GB HDD 39分 32分
(2) Core i7-6700K (Skylake) 4.0GHz 4 / 8 32GB SSD 27分 26分
(3) Ryzen 7 1800X 3.6GHz 8 / 16 32GB SSD 20分 19分

上の表は UE4 4.16.0 4.15.2 GitHub 版のビルド時間の比較です。Config は Development Editor。ビルドは Clean しながら 2回連続で行いました。1回目、2回目は実際にかかったコンパイル時間を意味しています。


(1) の Haswell は RAM 容量が半分かつ HDD なのでかなりハンデがあります。純粋な CPU の能力ではなく環境で差が生じているので、比較は参考程度にお願いします。2回目はある程度キャッシュに乗った状態なので差が縮まっていることがわかるかと思います。

(3) Ryzen はクロックが低いものの (2) Skylake 比で 7分ほど短縮できました。多 core 化の恩恵はプログラマにとっても非常に大きいようです。よりパワフルな CPU が入手しやすくなったのはとても喜ばしいことです。

CPU core 数が倍になっていますがビルド時間は必ずしも半分にはなっていません。UnrealBuildSystem はスレッド化されていますが完全な同期型となっています。並列実行可能なソースコンパイルがすべて完了してからシングルスレッドでリンクを行っているようです。

他にも UnrealHeaderTool 等並列化されていないタスクがあるので、並列度が上がれば上がるほど全体のビルド時間にシングルタスク部分の割合が増えていくことになります。(アムダールの法則) シングルタスクの割合が小さければもっと差が開いていたものと思われます。


| 次のページ(日付が古い方向)>>