お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2022/07/29 12:00

連載

西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

Metal 3を発表するJeremy Sandmel氏(Senior Director,GPU Software,Apple)
画像集#002のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた
 少し前の話になるが,北米時間2022年6月6日,Appleは,開発者向けカンファレンス「Worldwide Developers Conference 2022」(以下,WWDC 2022)を開催した。イベント初日の基調講演で同社は,Mac向けの次期OS「macOS Ventura」を発表したが,それに合わせて,macOSおよびiOS向けのグラフィックスAPI「Metal」の最新版となる「Metal 3」を発表したのが,ゲーマーにとって重要なポイントだ(関連記事)。

 といっても,4Gamer読者でもMetalのことを耳にしたことがない人は少なくないだろう。
 Metalとは,macOSやiOS(※iPad OSやtvOSも含む)を搭載したApple製コンピュータで採用されているグラフィックスサブシステムのことだ。イメージ的には「DirectX」(Direct 3D)や「OpenGL」のようなものと理解していい。ただMetalは,抽象化レイヤーを薄くしてGPUハードウェアに近いレベルで制御するモダンなAPI構造を採用しているのが特徴である。つまり,DirectX12やVulkanに設計思想は近い。

 その最新版となるMetal 3は,MicrosoftのWindows&Xboxプラットフォームで採用されている「DirectX 12 Ultimate」や,OpenGL系の低抽象化版「Vulkan」に近い機能を実装しており,少なくともAPIレベルでは,WindowsベースのPCゲームを過不足なく移植できる能力を有するようだ。
 その根拠は,Appleの開発者向けWebページにある動画を見ると分かる。WWDC 2022におけるMetal 3関連セッションの1つを動画にしたもので,概要の解説ではあるが,けっこう濃い内容だ。

Discover Metal 3


 そこで本稿では,この動画から,Metal 3がなぜWindowsベースのPCゲームを過不足なく移植できる能力を持つと考えられるのかを説明していこう。


Metal 3の「Fast Resource Loading」とは?


 まずは,Metal 3の新機能である「Fast Resource Loading」技術から。
 Fast Resource Loadingは,グラフィックス関連データを,CPUオーバーヘッドを低減しながら高効率に読み込んで展開する仕組みである。これは,DirectX 12 Ultimateでいうところの「Direct Storage」に相当する機能だ。さらに言えば,この仕組みは,PlayStation 5(以下,PS5)が備える「Kraken Decompression」技術を中核とした超高速データローディングシステムや,Xbox Series X/S(以下,XSX)の「Xbox Velocity Architecture」に近い技術である。

PS5におけるデータローディングサブシステムのブロック図
画像集#003のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 近年のゲームでは,必要なデータブロックを断続的に読み込むようなファイル操作を多用することが多い。とくに,オープンワールド系のゲームなどで顕著だ。しかし,こうした処理は,CPU側で動く1つのスレッドが入出力制御を担当する一般的なファイル入出力システムAPIとは,相性がよくない。そもそも一般的なファイル入出力APIでは,細かいデータの読み込みを多用する処理を想定していない。これは,かつてPCにおけるストレージデバイスの主流であったHDDが,そうした用途を想定していなかったことも理由であろう。
 ところが,最近ではSSDが普及してきたこともあり,HDD時代ではあまり使われなかった処理に対応する気運が高まってきたのだ。

 ゲーム業界からの要望を受けて,Microsoftは,2021年に「Direct Storage」を発表した。
 Direct Storageでは,SSDからの読み出し処理をDMA(Direct Memory Access)に担当させる設計として,CPUの介入を最低限とするファイル入出力システムを実現する。スクウェア・エニックス参加のゲームスタジオであるLuminous Productionsは,開発中のゲーム「FORSPOKEN」で,Direct Storageに対応することを大々的にアピールしていた(関連記事)。

Direct Storageのアーキテクチャ概略図。SSDからの読み込みは,CPUではなくDMAが直接担当する。なお,概略図は非圧縮データの場合で,圧縮データの場合,適宜,CPUやGPU,専用プロセッサなどが展開処理を行う
画像集#021のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 Metal 3でのFast Resource Loadingの実装における詳細は明らかになっていないが,Appleが公開したFast Resource Loadingの解説動画「Load resources faster with Metal 3」によると,細々としたデータの断続的な読み込みを,マルチスレッドでキューイングしながら,非同期に読み込ませる事例を紹介していた。これから推測するに,Direct Storageと近い実装形態になっていると思われる。

これまでのデータ読み込みにおける流れ図。CPU管理下のメモリ空間に圧縮データを読み込んでから,データを展開してGPU管理下のメモリ空間に伝送する流れとなっていた。統合メモリアーキテクチャ(UMA)のMacでも,このプロセスで行われる
画像集#004のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

Fast Resource Loadingにおける流れ図。ストレージから,ブロック分割された圧縮データを必要分だけ読み込みながら,必要最低限の作業バッファで展開しつつ,GPU管理下のメモリ空間に随時伝送できるようになった。作業用メモリとCPUオーバーヘッドの削減が恩恵になる
画像集#005のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた


Metal 3がMesh Shader対応へ


 Appleは,Metal 3が最新のジオメトリパイプラインである「Mesh Shader」に対応することも発表した。
 ジオメトリパイプラインとはポリゴン単位の処理系のことで,頂点パイプラインとも呼ばれることもある。Mesh Shaderについても解説するが,それにはちょっとだけ昔話から始めたい。

 PCやゲーム機の世界では,2000年に誕生した「DirectX 8」から始まったプログラマブルシェーダアーキテクチャが,今でもGPUにおける基礎技術基盤となっている。Microsoftは,DirectXの拡張と歩調を合わせるように,ジオメトリパイプラインにも機能を追加していった。たとえば,以下のようなものがある。

  • DirectX 10:「ジオメトリシェーダ」,ポリゴンの増減を行う
  • DirectX 11:「テッセレーションステージ」(ハルシェーダ,テッセレータ,ドメインシェーダをまとめた名称),プログラマブルにポリゴンを分割加工できる

 しかし,追加した機能同士が互いに似ているので,ゲームグラフィックス開発者からは使いどころが分かりにくかった。そのうえ実効性能も今ひとつだったため,多くの開発者にそっぽを向かれてしまう。その結果,GPUが持つこれらの機能を活用するゲームは増えず,ある意味,開店休業状態となっていた。

 この状況を打開すべく,2017年の「Radeon RX Vega」発表時にAMDは,新しいジオメトリパイプラインとして「Primitive Shader」を発表した。

AMDが2017年に発表したPrimitive Shaderの概念図
画像集#006のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 そして2018年になると,GeForce RTX 20シリーズ発表時にNVIDIAは,「Mesh Shader」を発表した。新ジオメトリパイプラインの標準規格戦争だ。

NVIDIAが2018年に発表したMesh Shaderの概念図
画像集#007のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 経緯は省略するが,Microsoftは,2020年春に発表した「DirectX 12 Ultimate」でMesh Shaderを正式採用して,業界的には一丸となってMesh Shader推進で行くことが確定した。DirectX 12 UltimateのMesh Shader採用よりも先に,ソニー・インタラクティブエンタテインメントが,PS5でPrimitive Shaderを採用すると表明したことで(関連記事),足並みが若干乱れはしたものの,AMDも,2020年発表の「Radeon RX 6000」シリーズでMesh Shaderへの対応を表明。これにより,Primitive Shaderはお蔵入りとなった。
 近年,AMD寄りの立場を取りちがちに見えるAppleなので,PS5が採用したPrimitive Shader案をMetal 3に採用したら,また混乱が広がったかもしれない。しかし,Appleは素直に最新GPU動向に乗って,Metal 3にMesh Shader対応を表明したわけだ。

 話を戻して,Mesh Shaderとは一体どんなものなのか。簡単に言うと,頂点シェーダやジオメトリシェーダ,テッセレーションステージの各機能を統合したジオメトリエンジンに相当するものだ。各種シェーダ群を必要に応じて使うことができ,逆に使わないこともできる。また,GPGPU(Compute Shader)的に,複数の子スレッドを起動して,その結果を親スレッドが回収するような処理系も実現可能だ。
 具体的な用途としては,ごく普通の頂点シェーダ的な処理のほか,不要なポリゴン群の削除(カリング)や,3Dモデルのハイポリゴン化(ポリゴン群の分割)などが,Mesh Shader活用の典型的な事例として挙げられている。

 なおMesh Shaderは,自動的にカリングやハイポリゴン化を行ってくれるほど万能なものではない。カリングやハイポリゴン化を実現するには,そういう仕事をするシェーダプログラムを書く必要がある。ただ,異なるメーカーのGPUであってもMesh Shaderの仕様に大きな違いはないため,できたシェーダプログラムは,ソースコードレベルではかなり高い互換性があり,そのまま流用できる。
 現在,Windows&Xbox向けのDirectX系ゲームで,Mesh Shaderを活用タイトルがどの程度あるのかは分からない(※事例は少ないと思われる)。ただ,Apple系プラットフォームのGPUでも,DirectX系シェーダプログラムがそのまま利用できることのメリットは大きいだろう。

AppleプラットフォームにおけるMetal 3以前のジオメトリパイプラインでジオメトリシェーダやテッセレーションステージ的な処理を行うには,GPGPU的な実装を行うしかなかった
画像集#008のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

それがMetal 3導入後では,ジオメトリパイプラインにおけるさまざまな頂点関連演算を,すべてMesh Shaderで処理できるようになる
画像集#009のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた


Metal 3も超解像技術「MetalFX Upscaling」を実装


画像集#010のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた
 Metal 3におけるもう1つの大きなトピックが,「MetalFX Upscaling」(メタルエフエックス アップスケーリング)と呼ばれるApple独自の超解像技術を実装したことだ。

 ここでいうアップスケーリングとは,「低解像度で描画した映像フレームに対して,超解像処理とアンチエイリアス処理を行って高解像度化する」という,ポストエフェクト処理のことを指す。
 ポストエフェクトによるゲーム向け超解像処理としては,NVIDIAの「Deep Leaning Super Sampling」(以下,DLSS)を初めに,AMDの「FidelityFX Super Resolution」(以下,FSR),Intelの「Xe Super Sampling」(以下,XeSS)がある。AppleのMetalFX Upscalingも,これらと同系のものだ。
 ただ,NVIDIAのDLSSとIntelのXeSSは,深層学習ベースの学習データを用いた,いわゆるAI系のアプローチで擬似高解像度化処理を行うものだが,一方,AMDのFSRは,信号処理による高解像度化技術という違いがある。

この図は,高解像度で描画すると30fpsでしか表示できないゲームを,MetalFX Upscalingを使えば60fpsでプレイできるようになる,という理屈を説明したものだ
画像集#011のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 では,AppleのMetalFX Upscalingはどちらのタイプなのか。例によって,基調講演では明瞭な言及はなかったが,講演後に公開となったMetalFX Upscalingのアルゴリズム解説動画「Boost performance with MetalFX Upscaling」を見た限りでは,AMDと似た信号処理系の実装で間違いなさそうだ。

 現時点のMetalFX Upscalingでは,2つの処理系を提供している。1つは,それなりの品質だが高フレームレートが狙えるという「空間方向アップスケーリング」の「MetalFX Spatial Upscaling」で,2つめは,高品質だが処理負荷が少し高くなる「時間方向アップスケーリング」の「MetalFX Temporal Upscaling」だ。
 空間方向アップスケーリングは,処理対象の単一フレームにのみ注目して超解像&アンチエイリアス処理をする。各ピクセルの周辺で輝度がどう変化するかの傾向に注目して,高解像度化したときにピクセルがなめらかにつながるよう補間したり,あるいは輝度に差があれば,それを鮮鋭化するようなアルゴリズムで処理する仕組みだ。

MetalFX Spatial Upscalingを適用したサンプル。左が実際に描画した960×540ピクセルの画像で,右がMetalFX Spatial Upscalingを適用して生成した1920×1080ピクセルの画像だ
画像集#012のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 一方,時間方向アップスケーリングでは,処理系自体は空間方向アップスケーリングとほぼ同一だが,補間や鮮鋭化をするときの参考情報として,その名のとおり過去フレームの画像や,現在のモーションベクター(ピクセル単位の移動速度情報。ベロシティバッファとも),現在の深度情報(デプスバッファ)なども引っ張ってくる。

MetalFX Temporal Upscalingを適用したサンプル。左が実際に描画した1920×1080ピクセルの画像で,右がMetalFX Temporal Upscalingを適用して生成した3840×2160ピクセルの画像だ
画像集#013のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 ちなみに,2022年春にAMDが発表した「FidelityFX Super Resolution 2.0」(関連記事)は,まさに時間方向アップスケーリングを取り込んでおり,WWDC 2022のセッションで明らかとなった内容とほぼ同一内容のものとなっているので興味深かった。



Metal 3のレイトレ対応がよりモダンに


 Appleは,NVIDIAやAMD,Intelが採用しているレイトレーシングのアクセラレーションと同等の技術を,Metal 3で実装することを明らかにした(関連リンク)。
 3Dシーンをレイトレーシング向けに最適化した空間表現データ構造として「Bounding Volume Hierarchy」(BVH)を採用していることや,光源から放たれたレイが,BVH構造を探査しつつ交叉(Intersection)判定するパイプライン構造は,GeForce RTXやRadeon RX 6000が採用しているものと同一である。

Metal 3ではレイトレーシング関連APIの実行を,よりGPUに回せるようになった。現状は,実装形態としてはGPGPU的なアプローチとなっており,いずれ登場するであろうハードウェアレイトレーシング技術への対応を見据えて改良した印象だ
画像集#014のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

Metal 3におけるレイトレーシングパイプライン。DirectX Raytracingの図とほぼ同一。というか,現在の業界標準にMetal 3も乗ったということなのだろう
画像集#015のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

Metal 3のレイトレ関連セッションで示されたBVH構造についての解説スライド。内容としては,放たれたレイが,3Dシーン内の3Dモデルに衝突するかどうかの判定のアルゴリズムと,衝突したと判定してから,どのポリゴンに衝突したのかを突き止めるまでのBVHの階層構造を図解したものになる
画像集#016のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 ただ,Apple製プロセッサである「Apple M1」や「Apple M2」の統合型GPUは,ハードウェアレイトレーシングに対応していないので,現状のMetal 3では,GPGPU的なアプローチでレイトレーシングを行う実装となっている。
 実のところ,以前のMetalでも,レイトレーシング技術には対応していた。Metal 3では,将来のハードウェアレイトレーシング対応に向けて,さらなるパイプラインの改良を進めた,と言うことのようだ。

 いずれにせよ,Metal 3におけるレイトレーシング関連機能を効果的に活用できるのは,ハードウェアレベルの交叉判定ユニット(いわゆるレイトレーシングユニット)を組み込んだ次世代GPUを搭載した将来のApple Silicon(Apple M3?)の登場を待つ必要がある。


カプコンのRE ENGINEがMetal 3対応


基調講演に登壇したカプコン 技術研究開発部技術開発室 室長の伊集院 勝氏。日本のゲームメーカーが,Appleの基調講演でスピーチを行うのは珍しい
画像集#017のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた
 WWDC 2022の基調講演では,Metal 3に関する発表の最後に,サプライズゲストとして,カプコンの技術研究開発部技術開発室 室長の伊集院 勝氏が登壇した。

 伊集院氏の発表は,2022年後半に「バイオハザード ヴィレッジ」のMac版を発売するというシンプルなものだったが,これには,裏のテーマがある。伊集院氏は,カプコンが誇るゲームエンジン「RE ENGINE」を統括する立場にあり,バイオハザード ヴィレッジがMetal 3に対応するということは,RE ENGINEがMetal 3に対応すると表明したのと同義だと言えよう。カプコン製タイトルのSteam版が,今後はMacにも対応してくる可能性が見えてきたわけだだ。

画像集#018のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 通常,ゲームエンジンは,ゲームを構成するほぼすべての要素において,ハードウェアに依存する部分と,依存しない部分をモジュール化して切り分けたアーキテクチャになっている。ハードウェア依存部を具体的に言うと,グラフィックス(GPU),サウンド,ストレージ,入力装置(ゲームパッド),ネットワークといったサブシステムなどを指し,ハードウェアに依存しない部分とは,ゲーム進行を司るシナリオの部分や,ゲームの組み立てに直結するゲームメカニクス,そのほかの多様なデータ群のことであり,いわゆるゲームコンテンツ部分のことを指す。
 ゲームエンジンを新しいプラットフォームに対応させるということは,事実上,ハードウェア依存部を対象のプラットフォームに対応させる,という意味になる。

 RE ENGINEベースのゲームをMacに対応させるには,RE ENGINEのハードウェア依存部をMacのハードウェアに対応させる必要があるが,サウンドやストレージ,ネットワークなどは,ゲーム機やPCの種別が違っても,その仕様に大差はないので,対応はそれほど面倒なものではない。ゲームパッドには,ゲーム機固有の機能が組み込まれていることもあるので,個別対応が必要な場合もあるが,一般論として,やはりダントツで個別対応が必要,かつ面倒なのがグラフィックスだ。
 パイプライン構造やプログラマブルシェーダアーキテクチャなどが,グラフィックス技術のトレンドに乗った仕様のグラフィックスサブシステムになっていないと,オリジナルの映像品質を維持したまま,異なるプラットフォームでゲームを動かすことは難しくなる。

 その意味では,Metal 3発表直後に「バイオハザード ヴィレッジのMac版を出す」とカプコンが発表したのは,「RE ENGINEのグラフィックスサブシステムを,Metal 3へ対応させる目処がたった」ということなのだろう。
 Macプラットフォームには,大作系ゲームが少ないと言われてきたが,それはひとえに,MacのグラフィックスサブシステムがWindows PCや最新ゲーム機のそれと比べて技術的に遅れていたり,あるいは独特なアーキテクチャを採用してきたという理由が大きかった。それが今回のMetal 3で,DirectX 12 UltimateやVulkanにかなり近い構造となったことで,これまでと比べれば,既存のゲームエンジンも,対応を行いやすくなったとみていい。

Apple系プラットフォームへのゲーム移植フレームワークとしては,「MoltenVK」というものが存在する。これは,Vulkanベースで開発したゲームをMetalベースのプラットフォームに移植するためのフレームワークだ
画像集#020のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

 Appleにとって,基調講演におけるカプコンの招致は,「MacでもWindows PCやゲーム機と同等のゲーム体験が楽しめるようになります」という,同社製プラットフォームのゲーム環境改善をアピールするために,とても重要なものだったに違いない。

 Unreal EngineやUnityなどの商用ゲームエンジンも,いずれはMetal 3への対応を果たすだろう。ただ,国内ゲーム開発スタジオの独自ゲームエンジンであるRE ENGINEがMetal 3に対応するという話題は,ゲーム業界に多少の影響は与えるかもしれない。
 カプコンも,「バイオハザード ヴィレッジのMac版を出す」以上の発表はしていないのだが,Metal 3自体は,次のスライドにあるApple製ハードウェアに対応することが決まっているので,いずれは,RE ENGINEベースのゲームが,iPhoneやiPadでプレイできるようになるかもしれない。とくに,M1/M2チップ搭載のiPadシリーズは,性能も高いので有望だろう。
 モンハンやストリートファイターがMacやiPadでプレイできる未来はやってくるのだろうか。

Metal 3が対応予定のApple製ハードウェア一覧
画像集#019のサムネイル/西川善司の3DGE:Appleのゲーム向けAPI「Metal 3」は,DirectX 12 Ultimateに一層近づいた

AppleのMetal解説ページ

  • 関連タイトル:

    MAC本体

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月27日〜11月28日