泰延WebGPUWebGL12112877ウェブの3Dグラフィックスを扱う新しい仕様として、WebGPUが提案されています。本記事ではWebGLとWebGPUの違いと、近況を紹介します。ESを非推奨化する旨が記載されています。12でOpenGL等は引き続き動作するものの、Metalへの置き換えを呼びかけています。ESの非推奨化について言及されているAppleのサイトでは「OpenGLを使用するゲームやグラフィックスを多く使用するアプリケーションでは、今ではMetalを採用するはずです」と記載されていますが、実際のところOpenGLはスマホゲームや3D表現、映像ソフトなど幅広い範囲で現在も利用されています。ウェブの世界でも関係のない話題ではありません。WebGLやFlash(Stage3D)はOpenGLがベースになっているため、影響を受ける可能性もあります。2.0」より引用そもそも、広く普及したOpenGLをなぜ非推奨化したのでしょうか。台頭する新世代のグラフィックスAPIOpenGLは1990年代前半に登場し、オープンな標準仕様としてさまざまなプラットフォームで搭載されていきました。ESが搭載されています。OpenGLはプラットフォーム間の移植性がしやすく、豊富な技術的ノウハウがあるため、アプリケーション開発者にとって採用しやすい選択肢の1つでもありました。ゲームエンジンや映像編集ソフトなど、エンジニアが意識していなくても下層でOpenGLが使われているといったこともよくあります。10年前のAppleはmacOSの新機能にOpenGL対応であることを宣伝文句にしていた時期もありました。そんなOpenGLですが、時代が進むにつれ次のようなデメリットも発生してきました。Wikipediaには次のようにデメリットが紹介されています。12(2016年〜)が登場しています。ハードウェアに近い低レベルな制御を可能にしたり、新世代のアーキテクチャの採用など、似たようなコンセプトで設計されており、オーバーヘッドの削減により一般にOpenGLよりも優れたパフォーマンスを提供できると言われています。新グラフィックスAPIに対応するウェブ向けの仕様WebGLはその名の通り、OpenGLをウェブで利用できるようにしたものです。12を利用することはできません。そこで、Appleが提案してきたのがWebGPUです。Groupの憲章によるとWebGPUのAPIは次のようにあるべきだと記載されています。現代のウェブプラットフォーム設計パターンにうまく対応するAPIアプリケーションのパフォーマンスを向上させる低レベルのAPIより現代的なAPIによって提供され、多くのデバイスで利用可能なGPUの計算機能を提供するAPI最新の低レベルのグラフィックスAPIを持つすべてのプラットフォームで合理的に実装できるテクノロジJavaScriptとWebAssemblyの両方に効率的なバインディングを提供するために設計されたAPIパフォーマンス向上と機械学習等で利用できる計算機能の提供が目新しい利点と言えそうです。WebGPUを試そうWebGPUのコードはWebKitの実験ページにアクセスして試すことができます。demosを開く2018年現在最新の通常版Safari(macOSとiOSともに)にはすでにプロトタイプが実装されており、開発者メニューより有効にすることでWebGPUを試せます。SafariでWebGPUを設定にする方法。SafariでWebGPUを設定にする方法。demosを試してください。このサイトでは次の4つのデモが公開されています。▲定番の三角形の描画。Worldみたいなもの▲2次元のシェーダー表現。提案段階のWebGPUはMetalをマッピングしたものWebGPUとMetalのコードを比べてみましょう。次のコードは私が両環境で同じ実行結果が得られるように作成したものです。掲載しているのは一部分ですが、オリジナルのソースコードはGitHubに公開しています。WebGPUのコードはJavaScriptとSwiftの言語的特徴を除けば、まったく同じであることに気づきます。Metalのコードともに両コードはMetalファイルを頂点・断片シェーダーとして使っています。これはまったく同じファイルを使ってます。WebGPUを提案したAppleが、自社の技術をプロトタイプとして提案したからだと思います。Jacksonのツイートによると、「WebGPUは出発点のための私達の提案です。他のブラウザエンジンはそれぞれの提案があるでしょう」と述べています。今後の仕様策定がどのように進んでいくか気になるところです。Groupの状況はこちらで確認できます。Jackson氏はTwitterでWebGLは継続して利用できるようにツイートしています。日本語訳:OpenGLを非推奨にするというAppleの発表は、Safariを使ったWebGL開発には何の影響も与えません。下層は変わるかもしれませんが、WebGLは変わりません。この主張が正しければWebGLは今後も安心して使い続けることができそうです。一度標準になったものは、何年後も使い続けられるのが理想ですよね。ないと、我々の作っているウェブコンテンツは将来のブラウザで見ることができなくなってしまいます。Blog」で紹介したように、WebGLを利用したコンテンツが再生されなくなると、それは失われた文明となるでしょう。XML(E4X)は今のブラウザでは使えなくなりました(人気がなく廃れた機能)。Workerの共有メモリは、CPUのメルトダウン・スペクラー問題の影響で利用できなくなりました(セキュリティーの問題)。Playerも2020年には使えなくなります(Appleの強権と大衆煽動による市場奪取)。さまざまな事情と前例がある以上、テクノロジーはいずれ世代交代を強要させられる日がくるかもしれません。まとめOpenGLやWebGLの勉強を考えていたのにAppleの影響で将来が心配...。そんな心配はいりません。WebGPUは各ブラウザにすぐには来ないですし、今後仕様が大きく変わる可能性もあります。根本的にはGPUの特性を理解するほうが大事で、WebGLを学ぶことがGPUの理解に繋がります。OpenGL/WebGLのシェーダーを理解していれば、Metalのシェーダーもすぐに書けるようになるでしょう。WebGPUに関する記事は3部連載になっています。平成30年7月2日に内容をメンテナンスしています。