PlayCanvas Engine 2.23.0 がリリース!描画のCPU負荷を最大3.8倍削減、Gaussian Splattingの読み込みも改善

2026年10月1日(現地時間)- Webブラウザ向けのオープンソース3Dエンジン「PlayCanvas Engine」が、バージョン2.23.0へとアップデートされました。

目次
    1. 最大3.8倍高速化したレンダラー
    2. ゲームの一部として作り直されたUIサンプル
    3. カメラに近い順に読み込むGaussian Splattingストリーミング
    4. CameraFrameのブルームしきい値
    5. MiniStatsの再設計とPlayCanvas Inspector

主な新機能

今回はレンダラー内部の大規模な見直しが中心で、1フレームあたりのCPU処理時間がWebGPUで最大3.8倍、WebGL2で最大1.4倍高速化しています。あわせて、UIサンプルの全面刷新、Gaussian Splattingのストリーミング改善、CameraFrameのブルームしきい値、MiniStatsの再設計なども含まれています。

最大3.8倍高速化したレンダラー

レンダラーの深いレベルでの作り直しが行われました。公式は、1フレームあたりのCPU時間がWebGPUで最大3.8倍、WebGL2で最大1.4倍短縮されたとしています。

リリースノートを見ると、変更の多くは「描画のたびに繰り返していた準備処理を減らす」方向のものです。主な改善は次のとおりです。

  • マテリアルのデータを専用バッファに集約: StandardMaterialの色や数値、テクスチャ変換などをマテリアル単位のユニフォームバッファに格納し、テクスチャもマテリアル専用のバインドグループで保持するようになりました。バインドは描画ごとではなく、マテリアルが切り替わったときだけ行われます。
  • ライト情報をパスごとに1回だけ送信: ライトのユニフォームをビュー用のバッファに移し、レンダーパスごとに1回アップロードする方式に変更されています。
  • WebGPUのパイプライン処理を省略: レンダーパイプラインを描画間で保持し、状態が変わったときだけ検索するようにしたほか、すでにバインド済みの頂点・インデックスバッファの再設定をスキップします。
  • メッシュの行列を永続バッファに格納(WebGPU): メッシュインスタンスの行列を、ストレージバッファに保持し続けるようになりました。
  • シャドウ処理の無駄を削減: 必要なカスケードだけをカリングする、描画されないシャドウパスではVSMのぼかしを省く、といった最適化が入っています。ディレクショナルシャドウは最大距離でフェードするようになりました。

なお、短縮されたのはCPU側の処理時間で、「最大」の数値です。オブジェクトやマテリアルの数が多く、CPU側の描画準備がボトルネックになっているシーンほど効果が出やすい種類の改善と見られます。GPU負荷が支配的なシーンでは、同じ比率でフレームレートが上がるとは限りません。

ゲームの一部として作り直されたUIサンプル

ユーザーインターフェースのサンプルが、すべて「実際のゲームの一部」として作り直されました。メニュー、設定画面、インベントリ、ドラッグ&ドロップ、リアルタイムの3Dポートレート、ワールド空間に置くパネルなどが含まれています。

個々の機能を示す最小限のサンプルではなく、ゲームで実際に必要になる画面の形で用意されているため、自分のプロジェクトのUIを組むときの出発点として参照しやすくなっています。

カメラに近い順に読み込むGaussian Splattingストリーミング

ストリーミング形式のGaussian Splattingシーンで、LODファイルをカメラに近いものから順に読み込むようになりました。見ている場所のディテールが先に表示されます。

LODの仕組みも見直され、距離のみで判定する方式になりました。表示するスプラット数は、目標値または上限値として予算を指定できます。

このほか、GPUソート方式のレンダラーでの確率的アルファ描画、GPUソート時のちらつきやNVIDIA GPUでのデプスピッキング時のハングの修正など、Gaussian Splatting関連の変更が多数含まれています。

CameraFrameのブルームしきい値

ポストエフェクトをまとめて扱うCameraFrameのブルームに、しきい値が追加されました。

これにより、一定以上の明るさを持つハイライトだけを光らせることができ、画面全体がぼんやり発光するのを抑えられます。

MiniStatsの再設計とPlayCanvas Inspector

パフォーマンス表示ツールのMiniStatsが再設計され、コンパクト表示とグループ表示、折りたためるセクション、GPUリソース数のリアルタイム表示が加わりました。

また、公式のサンプルブラウザが新しいデザインになり、シーンの中身を調べられる「PlayCanvas Inspector」が組み込まれています。

その他のアップデート

  • jsdomなしでNode.js上でヘッドレス実行できるように
  • StandardMaterialが8つすべてのUVセットに対応
  • マルチレンダーターゲット向けに、アタッチメントごとのクリアカラーを設定可能に
  • 頂点・インデックスバッファの部分アップロードに対応
  • RigidBodyComponentにgravityScaleを追加
  • レイキャストでメッシュコライダーの裏面を除外するhitBackFacesオプションを追加
  • パーティクルシステムにuseFog/useTonemapを追加
  • URLの拡張子にかかわらずオーディオアセットを読み込めるように
  • ゲームパッドを毎フレーム、メモリ確保なしでポーリング

【既存ユーザー向け】削除・非推奨になった機能

内部構造の変更にともない、いくつかの機能が整理されています。アップデート前にリリースノートで確認しておくと安心です。

  • シェーダーのダンプ/プリコンパイルのワークフローを削除
  • 旧来のイミディエイトメッシュ描画を削除
  • パーティクルのnoFog、シェーダーのuScreenSizeは非推奨に(それぞれuseFog、screen_sizeへ移行)
  • supportsUniformBuffersをusesMeshBindGroupsに改名
  • 物理APIの公開範囲を整理

価格と動作環境

PlayCanvas Engineは、WebGL2とWebGPUに対応したWebグラフィックスエンジンです。MITライセンスのオープンソースとして公開されており、無料で利用できます。

価格無料
ライセンスMIT(オープンソース)
グラフィックスAPIWebGL2 / WebGPU
導入方法npm install playcanvas

PlayCanvas 公式サイトへ

目次

    1. 最大3.8倍高速化したレンダラー
    2. ゲームの一部として作り直されたUIサンプル
    3. カメラに近い順に読み込むGaussian Splattingストリーミング
    4. CameraFrameのブルームしきい値
    5. MiniStatsの再設計とPlayCanvas Inspector