ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
Metal 3の紹介
Metal 3で、あなたのAppにAppleシリコン上のポテンシャルをフル活用しましょう。最新の機能、改善点、ツールを紹介します。また、リソースの高速ロード、ビルド時のシェーダバイナリのコンパイル、メッシュシェーダによる複雑なジオメトリの処理、高解像度グラフィックスの高速レンダリング、機械学習ネットワークの高速トレーニングなど、先進の機能とコンパイラツールの使用方法について紹介します。
リソース
関連ビデオ
WWDC22
-
ダウンロード
♪ ♪
Tarun Belagodu: Metal 3の紹介 私 Tarun Belagoduが Metalの進化の最新情報をお届します まず 基本的なことからMetalは 低オーバーヘッドのグラフィクスとAPIです Apple製品の強力なGPUを駆動するため 最速かつ最も効率的な方法で設計しています GPUに送信されるコマンドを マルチスレッドで直接制御し 明示的なシェーダのコンパイルをサポートする シェーディング言語や複雑なAppやゲームの デバッグやプロファイル作成を支援する 深く統合されたツールなどを提供します
Metalは登場以来GPU駆動レンダリングや 機械学習レイトレーシングに 重点を置き高度なグラフィックスや コンピュータ機能を多数追加してきました Appleのシリコンが新しいMacに 驚異的な グラフィックス性能と効率性をもたらすのです その能力を解放するのがMetalです 今年 Metal 3で次のステージに飛躍します
より高いパフォーマンスと レンダリング品質を実現し 強力な新機能のセットでAppやゲームの 高速処理と美しい映像をサポートします まず リソースの高速読み込みについて 最近は アセットのロード要件が厳しく 小さなアセット要求を ファイルからMetalに素早く ストリーミングすることで 高品質な映像を実現します しかし既存のAPIは大規模な 一括要求に対応しています
Metal 3のFast Resource Loadingでは マルチスレッドで 小さなロードを多数要求します 各要求はコマンドであり多くのコマンドを 非同期送信のためにキューに入れられます 直接Metalのバッファとテクスチャに読み込まれ 開発労力と転送時間の両方が節約できます Fast Resource Loadingでは Metal同期プリミティブの使用によって GPU 操作とロード操作間の調整も容易です Texture streamingシステムのメリットは 高速なリソースロードです例えば
Metal Sparse Texturesでは タイル単位で可能です Texture streamingシステムは 4つのステップで構成されます まず 前フレームの情報を 元に読み込むものを決めます 次に ファイルストレージ から タイルをロードして ステージングエリアから スパーステクスチャにコピー 最後にフレームを描きます
読み込みやコピーに時間がかかるほど Appが低品質で描き出しに時間を要します
Fast Resource Loadingは ロードのオーバーヘッドを 最小限に抑えストレージハードウェアの キューにリクエストを確保し スループットを最大にします これで より高速で安定した パフォーマンスを実現し 高品質な描き出しに時間が割けます
これで高品質なアセット‐ストーリーミングに 必要なコードを大幅に簡素化できます Fast Resource Loadingの詳細は “Load resources faster with Metal 3”をどうぞ 次に新しいオフライン コンパイルのワークフローが ロード時間やスタッター解消 にどう役立つか説明します シェーダーバイナリはGPU固有のマシンコードで 従来は Metalパイプライン 作成プロセスの一部として Appの実行中に生成されていました これらのバイナリの生成は コストがかかる処理であり 通常はApp起動時のローディング画面に隠れて いますが インフレームでの実行が必要な場合は フレームレートのスタッター を引き起こすことがあります これらのバイナリーはMetalによって キャッシュされるため 都度コストを支払うことは ありませんがAppの初回起動時や バイナリーが初めて必要になると発生します オフラインコンパイルでは 実行時のシェーダバイナリ 生成が省略できます
バイナリ生成をプロジェクト のビルド時に行うことで ロード時のMetalパイプライン の作成時間を大幅に短縮し Appのスタッターを軽減できます スタッターの軽減について 詳しく見ていきましょう
エンコード中にMetalパイプラインの ステートオブジェクト作成が 必要なゲームの例です Metalにとって初見のパイプラインなので 必要なシェーダバイナリを生成します フレームの残りのエンコードを中断する 長い操作のため Appがフレームレートの目標を 逃す原因になりますたった一度の 現象ですが ユーザーは スタッターに気づくでしょう 一方 オフラインコンパイルでは ビルド時にシェーダバイナリが生成でき パイプラインの各ステート作成が 高速になり Appのロード時間も短縮します
ほとんどのAppは専用のロードフェーズで Metal pipeline state オブジェクトの大半を作成し シェーダーバイナリーを 初回ロード時に生成します パイプラインを多数作成する Appは時間がかかります オフラインコンパイルでは シェーダバイナリ 生成は再び ビルド時に移行でき ロード時間が 短縮され より迅速にAppにアクセスします 複数パイプラインを持つAppには 画期的です オフラインコンパイルと他の改善点については 「Metal 3でGPUバイナリをターゲットにして 最適化する」をご覧ください
次は Metal App向けに プラットフォームに最適化した グラフィックス効果を備える MetalFXをご説明します MetalFX Upscalingは高性能 なアップスケーリングと アンチエイリアシングで 短時間で良質な描画を行い 時間または空間的なアルゴリズムの配列を 選択し パフォーマンスを向上させます なぜ それが重要なのか Retinaの解像度はAppやゲームに求める ディティールを鮮明に映しますが すべての ピクセルを生成すると パフォーマンスに影響します MetalFX Upscalingは低解像度でピクセルを 生成し フレームワークに 高解像度で生成させるため 高解像度の画像を低コストで生成し はるかに高いフレームレートを実現します MetalFXは 高性能高品質のUpscalingを 実現する強力なフレームワークです 詳細は「MetalFX Upscalingで パフォーマンスを向上させる」 をご覧ください 次は Metalの新しく柔軟な ジオメトリパイプライン Mesh Shaderをご紹介します 従来は シェーダ―で頂点を変換し ラスター化のため固定機能ハードウェアで プリミティブに組み立てられていました しかし カリングなどの一部のユースケースでは プリミティブ全体へのアクセスが必要です 各頂点は独立して読み込み 交換し 出力されるので描画の途中で頂点や プリミティブを追加することはできません 高度なジオメトリ処理には 柔軟性が求められます 従来は 計算パスでジオメトリをプリプロセス することを意味していましたが 可変長の中間ジオメトリを デバイスメモリに格納する 必要があり 予算の確保が困難かもしれません MetalのMesh Shaderは頂点ステージを
2ステージモデルに置き換え 階層的な処理ができる 代替ジオメトリ処理 パイプラインを用いています 第1段階では オブジェクト全体を解析して 第2段階で形状を拡大 縮小 精緻化するか決定します 中間デバイスのメモリストレージを必要とせず レンダーパスで計算機能を 提供しているためです GPU駆動のカリングLOD選択 プロシージャル ジオメトリ生成などを行うAppに最適です 詳しく見てみましょう この例では 計算パスがサーフェスを評価し そのジオメトリを生成しています ジオメトリと描画コマンドは デバイスメモリに書き込まれ 後のレンダリングパスで使用されます 高い拡張倍率と間接的な描画呼び出しにより 必要なメモリ量の予測は難しいかもしれません
Mesh shaderはレンダリングパイプライン内で 2つの計算ステージをインラインで実行し
効率化していますオブジェクトステージでは 入力を評価して 生成する メッシュの数を決定します
Meshステージではジオメトリを生成します メッシュは直接ラスタライザに送られ デバイスメモリへの往復や 頂点処理の必要性を回避できます
Mesh shaderはAppの効率的なLODシステム プロシージャルジオメトリ カリングを構築できます Mesh Shadersの詳細は 「Metalメッシュシェーダで ジオメトリを変換する」をご覧ください
Metal 3でレイトレーシング のパイプラインが大幅に 高速化されました加速度構造のビルド 交差点 シェーディングなど すべて最適化しています Metalは GPU駆動のレイトレーシング パイプラインをサポートし Appをさらに最適化します Metal 3のレイトレーシング を従来と比較してみます
Metal 3はCPUとGPU時間を大幅に節約しています 加速度構造が短時間で構築され 光線の描画や トレースに必要なGPU時間がより確保できます さらにIndirect Command Bufferにより CPUオペレーションがGPUに移行できます プリミティブデータへの直接アクセスさせて 交差とシェーディングを合理化 最適化します Metal 3のレイトレーシング は改良と強化を続けています 詳しくは「Metalレイトレーシングの パフォーマンスを最大限に高める」 をご覧ください Metal 3ではMachine Learningを 加速するため大幅な改良を実施し Macでのネットワークトレーニングの加速が 追加サポートされグラフィックスや メディア処理AppのML推論も最適化しています TensorFlowは MacでGPUアクセラレーションが 可能なMachine Learning用 フレームワークとして人気で 最新のMac StudioはCPUでのトレーニングと比べ 様々なネットワークでM1 Ultraで最大16倍の スピードアップを実現しています Metal 3は 新たに多くのTensorFlowの演算を 高速化しているためCPUとの同期が少なくなり さらにスケーラブルな パフォーマンスを実現します PyTorchも人気のMLフレームワークで GPUアクセラレーションをMetalで獲得しました M1 Ultra搭載のMac Studioでは CPUと比較して トレーニングが大幅にスピードアップできます BERTモデルを最大6.5倍ResNet50を最大8.5倍 高速学習させることができます MetalはApple Silicon全体でML推論を最適化し パフォーマンスを最大化します 特に BlackMagic Design社の カラーグレーディングに 特化した映像制作プラットフォーム DaVinci Resolveのような Metalベースの高性能な 動画や画像処理App上で有効で ワークフローに MetalとMachine Learningを多用しています その成果は驚くべきものです BlackMagic DesignはMetalの高速化された Machine Learningのサポートにより カラーグレーディングや編集のワークフロー MLベースのツールにおいて 劇的に性能を改善しました Machine Learningのアップデートについては “Accelerate Machine Learning with Metal”へ では Metal 3の機能をサポートしている ハードウェアの紹介に移りましょう Metal 3は A13 BionicまたはM1チップ以降の iPhoneとiPad すべての AppleシリコンMacシステム 最新のAMDおよびIntel GPUを搭載した Macシステムなど最新のすべての iOS iPadOS macOSデバイスに対応しています
Metal 3に対応するか確認する際は supportsFamilyクエリを使用します
Metal 3は機能だけでなく先進的な 開発ツールも包括的に備えています いくつか紹介します Xcode 14のMetal Dependency Viewerでは レンダラー全体の可視化や シングルパスのズームインが容易になりました また GPU駆動のパイプラインの採用や Fast Resource Loadingなど との同期を容易にするため Dependency Viewerに依存関係の 解析と検証を支援する 同期エッジを追加しました 改善したAcceleration Structure Viewerで レイトレーシングを最大限活用します まず シーン内の個々の プリミティブをハイライト
表示でき プリミティブを 選択すると 関連データが 左のアウトラインに表示されます
最後に シーンにモーション情報がある場合 加速度構造ビューアで 異なる時点を視覚化できます
Xcode 14のDeveloper Tools のアップデートの一部でした その他 Dylibのサポート新しいリソースリスト Shader Editorでのファイルナビゲーション カスタムBuffer Viewerのレイアウトなど 多数の新機能を搭載しています Metal 3の詳細は 他のセッションもぜひどうぞ 高度なグラフィックスや ゲームプロAppの構築の一助となるでしょう
本日は パフォーマンスとクオリティを向上する Metal 3の先進的な機能をご紹介しました 高速Resource Loadingによる高品質な テクスチャストリーミング オフラインコンパイルによる ロード時間短縮とスタッタリングの低減 高解像度でのレンダリングを 素早く行うMetalFX Upscaling 高度なジオメトリ処理に対応するMesh Shader レイトレーシングのための構造の構築 交差 シェーディングの高速化 さらに加速する機械学習 GPU駆動のパイプラインレイトレーシングなどの 高度な機能を活用するツールを紹介しました
新しいコードサンプルとドキュメントの詳細は developer.apple.com/Metal にアクセスしてください ご参加ありがとうございました
-
-
0:01 - Device Family
if device.supportsFamily(.metal3) { // My awesome Metal 3 renderer }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。