BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Apple、WebGPUという新しい3Dグラフィックス標準を提案

Apple、WebGPUという新しい3Dグラフィックス標準を提案

ブックマーク

原文(投稿日:2017/02/17)へのリンク

AppleがWebGPUというブラウザ向けの新しいGPU APIを提案している。一方、GoogleはNXTという別のソリューションを開発中だ。

GPU機能を使った3Dグラフィックスのレンダリングに関して、主要なブラウザはWebGLをサポートしている。しかし、Appleはそれに満足しておらず、最新のGPU機能を活用した最初からクロスプラットフォームの別の標準をコミュニティが開発することを望んでいるようだ。そこで彼らは、WebGPUというW3C Web Community Groupを立ち上げた。

その憲章によると、新しい標準は以下であるべきだという。

  • 最新のWebプラットフォーム設計パターンにうまく対応したAPI
  • アプリケーションのパフォーマンスを向上させる、よりローレベルのAPI
  • モダンなAPIによって提供され、様々なデバイスで利用できる、GPU計算機能を公開するAPI
  • 最新のローレベルのグラフィックスAPIを持つ全てのプラットフォームで、リーズナブルに実装できるテクノロジ

そして、以下のインターフェースを提供するべきだという。

  • オフスクリーンとオンスクリーンの両方の描画サーフェイスに対して、最新のグラフィックスをレンダリングできること
  • 計算タスクを実行し、そのタスクの結果を取得できること
  • プラットフォーム固有の命令に変換またはコンパイルできる形式で、グラフィックスと計算タスクを記述するシェーディング言語を定義すること

APIは、主要な全てのOSで、DirectX 12、Metal、Vulkanなど既存のGPUライブラリ上で実行できるべきだ。

WebKitチームのDean Jackson氏は、WebGPUとそのAppleによるコンセプト実証用実装について詳しく説明している。そこで彼は、これはMetalのJavaScriptへのマッピングとして始まったが、Metalにしばりつける必要はないと述べている。WebGPUのプロトタイプはMetal Shading Languageを使っているが、最終的には「DXILやSPIR-Vに似た何らかのIR形式のシェーダーを受け入れる」ようだ。Jackson氏はまた「Metalには、VulkanとD3D12にうまくフィットしないものがいくつかある」と述べている。

Appleの先制に続いて、GoogleはNXTという提案およびプロトタイプを提出している。まだ作業中だが、NXTは、DirectX、Metal、Vulkanから着想を得たクロスプラットフォームのAPIだ。JavaScriptとWebAssemblyから呼び出すことができ、今のところOpenGLとMetalで動作する。GoogleはOpenGL経由でNXTをChromiumに「簡単に」統合し、NXT-Chromiumプロジェクトで実証している。NXTはシェーディング言語としてSPIR-Vを用いている。

Appleは自らの主張を押し通そうとしているとコメントしている人もいれば、それよりもKronos GroupのオープンソースGPU APIであるVulkanをサポートすべきだという人もいる。それに対してJackson氏は、Vulkanには必要とする幅広いサポートがなく、Webのための標準にはローレベルすぎると答えている。そして、次のように、Appleは自らの主張を押し通すことを望んでいないと繰り返し述べた。「明確にしておきますが、WebGPUは出発点としての我々の提案にすぎません。他のブラウザエンジンには独自の提案があります。W3Cで取り組みましょう。」

実際のところ、Appleは影響を与えることはできても、主要な全てのブラウザによってサポートされるWeb標準を決定することはできない。W3C Working Groupがどんな決定をするかはまだわからない。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT