2025年10月21日

Web上でついにWebGPUが利用可能に

EvergineがWebGPUを用いてWeb上で動作するようになったことを発表できることを嬉しく思います。
この新しい実験的テンプレートにより、開発者は最新のブラウザでEvergineアプリケーションを直接ビルドして実行し、次世代のWebGPU APIを最大限に活用できます。.NET 8とEmscriptenツールチェーンを活用したこのリリースでは、Evergineで初めてGPUアクセラレーションによるレンダリングとコンピュート機能がWebにもたらされ、より高いパフォーマンス、高度なビジュアルエフェクト、プラットフォーム間での統一されたワークフローが可能になります。

 

WebGPUとは?

WebGPUは、GPUへの低レベルアクセスを開発者に提供する最新のグラフィックスAPIであり、高度なレンダリング技術と計算能力を可能にします。

WebGLはOpenGL(現在はVulkanやMetalといったより効率的な代替手段に取って代わられたAPI)をベースにしていますが、WebGPUは従来のAPIの制限に対処し、グラフィックスプログラミングのためのより合理化された効率的なインターフェースを提供します。

WebGPUがWebGLよりも優れている主な利点の1つは、コンピュートシェーダーのサポートです。この機能は、負荷の高いアプリケーションのパフォーマンスを向上させ、複雑なシミュレーションを作成するための新たな可能性を開きます。WebGPUは最新のプログラミングパラダイムを念頭に置いて設計されており、開発者はパフォーマンスが高いだけでなく保守性の高いコードを記述できます。

 

現在のサポート状況

WebGPUはブラウザのカバレッジを急速に拡大しており、Web上の次世代グラフィックスおよびコンピュートアプリケーションの主要な標準となることが期待されています。現在のブラウザサポートと使用状況はこちらで確認できます:caniuse.com – WebGPU。

  • ChromeとEdgeはバージョン113以降、WebGPUを完全にサポートしています。
  • Android Chromeも、最新のデバイスのほとんどでネイティブサポートを提供しています。
  • Safari(macOSおよびiOS 17以降)には、WebGPUサポートが組み込まれています。Safari 26.0以降、WebGPUはデフォルトで有効になっています。
  • Firefoxは部分的なサポートを提供しており、完全な実装に向けて積極的に取り組んでいます。

ブラウザの市場シェアでグラフを重み付けすると、大多数のユーザーがすでにWebGPUサポートの対象であることが明確になります。

 

今回のEvergineリリースでの変更点

これまではWebGPU Native(デスクトップ)に注力していましたが、今回Evergineは.NET 8に同梱されるWASM/Emscriptenツールチェーンを通じて、Web上でのWebGPUをサポートするようになりました。これは具体的には以下のことを意味します。

  • EvergineプロジェクトをWebAssemblyにビルドし、ブラウザ内で動作させながら、Emscriptenが公開するWebGPU APIを呼び出せるようになります。
  • WebGPU.NET(Evergineの低レベルバインディング)を更新し、Emscriptenランタイムが提供するWebGPU C APIをマネージドC#に公開するようにしました。

 

Evergineにおける統合の基本

WebGPU.NET、WebGPU向けC#バインディング

EvergineでのWebGPU統合のための専用C#バインディングであるWebGPU.NETを更新し、Webブラウザでの互換性向上のため、Emscriptenが提供するAPIヘッダーを公開するようにしました。

Nagaを用いたHLSLからWGSLへのシェーダー変換

シェーダー開発の一貫性を維持するため、Nagaを使用したHLSLからWGSLへの変換レイヤーを実装しています。このリリースでは、ライブラリのバージョンを26.0.0に更新し、以前のバージョンではエラーが発生していた、より複雑なシェーダー変換をサポートできるようになりました。

旧リリース(22.1.0)で使用されていたNagaのバージョンでは、SPIR-Vからの変換時にいくつかの不整合エラーが発生し、WebGPUで複雑なシェーダーを使用する際に不安定さを引き起こしていました。

現在の実験的フェーズ

まだ実験的ではありますが、この統合はすでに基本的な機能をサポートしています。標準的なメッシュとマテリアルのレンダリング、スキニング、モーフターゲット、そして複雑なコンピュートタスクです。これらの機能により、開発者は最新のGPU能力を活用した、動的で視覚的に豊かなアプリケーションを構築できます。

 

WebGPU実験的テンプレートの利用開始

実験的なWebGPU統合を開始するには、Evergineで新しいバニラプロジェクトを作成し、通常どおりWebGPUプロファイルを追加します。

既知の制限事項

実験的なWebGPU Webテンプレートを使用する際に注意すべき、いくつかの重要な注意点があります。

  • RGBA32Float HDRテクスチャ: ほとんどのモバイルGPU/ブラウザ(Chrome)は32ビット浮動小数点RGBAテクスチャをサポートしていないため、多くのスマートフォンやタブレットでは真のHDRテクスチャは利用できません。
  • 深度クリップ制御 / シャドウアーティファクト: .NET 8に同梱されているEmscriptenツールチェーンは深度クリップ制御を公開していないため、シャドウマッピングでアーティファクト(特にカメラの背後にあるオブジェクトからの影)が発生する可能性があります。
  • GPUパーティクルとポストプロセッシング: 高度なポストプロセッシングエフェクトとGPUパーティクルシステムは、まだWebGPUでサポートされていませんが、将来のリリースでのサポート提供を目指しています。

 

David avila
著者
David Ávila
Plain Concepts Research