2025年3月27日(現地時間)- Microsoft は、オープンソースでウェブベースのゲームおよびレンダリングエンジン Babylon.js 8.0 のリリースを発表しました。
新機能ハイライト
Babylon.js 8.0 には、より魅力的でインタラクティブなウェブ体験をこれまで以上に速く作成することを支援することを目的とした、新機能、最適化、パフォーマンスの改善が数多く盛り込まれています。
Babylon.jsは、Microsoftが開発を主導するオープンソースプロジェクトですが、今回の新機能の複数を Adobeの開発者が貢献しているようです。
Babylon.js 8.0の新機能ハイライトは以下の通りです。
IBL シャドウ
イメージベースドライティング(IBL)は、ソース画像に基づいて環境照明を近似するコンピュータグラフィックスの照明技術です。コンピュータで生成されたエフェクトを現実の写真とブレンドする方法として、視覚効果の世界で生まれ、今日では広く普及しています。Babylon.js でも、8年以上前にIBLのサポートが導入されました。
今回のアップデートでは、Adobeの開発者の貢献によりシーン全体の環境の明るさと影の両方を、一枚の画像から推測して表現できるようになりました。
ライティング機能の強化
他にも以下のようなライティング機能の強化が行われています。
エリアライト
ユーザーから要望が多かった機能であるエリアライトが導入され、主に四角形の形状を指定して光を放射するライトを作成できるようになりました。
また、今のところこのライトは影を落としませんが、将来的には落とすようになる予定とのことです。
環境光の改善
Babylon.js 8.0 では、Adobe の開発者の貢献により、環境照明がよりリアルになり、リアルタイムレイトレーシングの結果にさらに近づきました。
IES ライトのサポート
IES ライティングは、照明器具から放射される光の形状を記述する技術です。Babylon.js 8.0 では IES ファイルのサポートが追加されました。
ノードレンダーグラフ (アルファ)
Babylon.js 8.0 の目玉新機能の 1 つは、「ノードレンダーグラフ(Node Render Graph)」と呼ばれるものです。
これまで、Babylonの特定のレンダリングパイプラインはブラックボックスで、Babylon に何をレンダリングするかを指示すると、Babylon がそれを実行してくれました。レンダリング完了後に結果を操作することはできましたが、レンダリングプロセス自体は不透明でした。
Babylon.js 8.0 では、レンダリングパイプライン全体を完全に制御できるようになりました。つまり、フレームがGPU上でレンダリングされるプロセスのあらゆる部分を完全にカスタマイズ、コントロールできるようになりました。
それに加えて、複雑なレンダリングプロセスコードを書かずに、独自のレンダリングパイプラインをカスタマイズできる、新しいノードグラフツールも利用できるようになりました。
新しい軽量ビューアー
Adobe からの貢献もあり、完全に新しい Babylon.js Lightweight Viewer が追加されました。
この新しいビューアは、フルエンジンの持つ美しいレンダリングとパワフルな性能を受け継ぎながら、ファイルサイズを小さく抑え、読み込むモデルに必要な機能(例えば、オーディオやアニメーション)だけを必要な時にダウンロードして使用するように設計されています。数行の HTML を追加するだけで、あらゆるウェブページに追加でき、完全に拡張可能です。
また、この新しい軽量ビューアには非常に使いやすいコンフィギュレーターが搭載されています。これは、希望通りの正確な仕様に合わせてカスタマイズし、ウェブサイトで同じように見えるように設定するためのシンプルな .html
プロパティを提供するシンプルなツールとなっています。
WGSLコアエンジンシェーダー
Babylon.js は初期の頃から、新しいウェブグラフィックス技術である WebGPU をサポートしていました。WebGPU は WGSL という独自の新しいシェーディング言語を使用しますが、Babylon.js のコアエンジンシェーダーは GLSL(WebGL シェーディング言語)で記述されていました。
これまで、Babylon で WebGPU を使用したい人は、利用可能な変換ライブラリを使用して Babylon シェーダーを WebGPU が使用できるものに変換していました。しかし、この方法には変換ライブラリが 3MB を超え、ユーザーが標準的な Babylon.js プロジェクトのダウンロードサイズの 2 倍になるという欠点があります。
Babylon 8.0 では、この問題が解消され、Babylon.js のすべてのコアエンジンシェーダーが、GLSL と WGSL の両方で利用できるようになりました。
変換レイヤーなしで WebGPU を直接サポートしたことにより、WebGPU をターゲットにする場合、プロジェクトのサイズを以前よりも実質的に 2 倍小さくすることができるとのことです。
右上から WebGL2 と WebGPU を切り替えてみてください
NME -> WGSL サポート
Babylon.js 8.0 では、コアエンジンシェーダーに加えて、ノードマテリアルエディター(Node Material Editor)を使用してカスタムの WGSL シェーダーを作成する機能が新たに利用できるようになりました。
オーディオエンジンの全面的な刷新
Babylon.js 8.0 では、長らく見直しが求められていたオーディオエンジンが全面的に刷新され、まったく新しいオーディオエンジンが搭載されました。
この新しいエンジンは、Web Audio の全機能を活用し、モダンな設計と使いやすさを追求しており、経験レベルに関わらず、あらゆるユーザーが高度なオーディオ機能を活用できます。特に、オーディオとビジュアルの融合による魅力的な表現に関心のある開発者にとって最適なツールとなっています。
ガウススプラットのアップデート
Babylon.js 8.0 では、既存のガウススプラットのサポートをさらに強化し、SPZ および圧縮 PLY 形式のサポート、球面調和関数の追加、そしてメモリフットプリントと CPU/GPU 使用率に関するランタイム最適化といった、新しいアップデートが追加されました。
SPZ形式は、Niantic Labs がガウススプラットのJPGを目指してオープンソース化したフォーマットです。SPZを使用することでファイルサイズを大幅に節約できます。
Havok キャラクターコントローラー
Babylon.js 8.0 では、Havok チームの協力により、Havokのフル機能のキャラクターコントローラーが Babylon.js に導入されました。
これにより、最先端のキャラクターコントローラーを活用して、ほんの数行のコードで独自キャラクターが登場するゲームを作り始めることができるようになりました。
スマートフィルター
Babylon.js 8.0 では、スマートフィルターとスマートフィルターエディターの導入により、豊富なノードベースの作成ツールライブラリがさらに拡張されました。
これらの新しいツールにより、ビデオフィルター、テクスチャ処理、ポストプロセスなど、様々な2D視覚効果の作成が可能です。
他の GPU ベースツールと同様に内部ではシェーダーを利用しており、ウェブエクスペリエンスにおける高度な2D視覚効果の作成に特化しています。
ノードジオメトリエディターのアップデート
昨年のアップデートでは、Babylon.js にノードジオメトリエディターを通じて、コードを記述することなくプロシージャルにジオメトリを生成する機能が導入されました。
Babylon.js 8.0 では、ラティスデフォーマー (Lattice Deformer)、ポイントリスト (Point List)、クリーンジオメトリ (Clean Geometry)、インターセプター (Interceptor)、アグリゲーター (Aggregator)、そして細分割機能 (Subdivision) など、多数の新機能を含む大幅なアップデートにより、ノードジオメトリが大きく進化しました。
他にも Lattice、Interceptor、Subdivision、Aggregator の例が公開されています。
ノードマテリアルエディター デバッグノード
Babylon のノードマテリアルエディターは、コードを記述することなく複雑なビジュアルシェーダーを容易に作成できるツールです。アーティストにも使いやすいこのツールは、GPU シェーダー構築の複雑さと、アーティストの思考プロセスや作業方法とのギャップを埋めることを目的としています。
Babylon.js 8.0 では、ユーザーインターフェースの改善に加え、新しい「ビジュアルデバッグノード (Visual Debug Node)」が導入されました。このノードを使用することで、ノードツリー内の任意の位置でビジュアル出力を確認できます。
これにより、出力ノードを移動したり、接続先を変更したりする手間を省くことができ、計算処理全体を通してシェーダーがどのように変化するかを視覚的に把握できます。
ブーリアンの改善
人気のある Manifold.js ライブラリがサポートされ、より一貫性のある幾何学的ブーリアンで新しい形状を作成できるようになりました。
Manifold.jsでは、より複雑な形状に対して、より安定した結果を高速に結果を得ることができます。
フォーマットサポートの強化
glTF サポートの更新 — KHR_materials_diffuse_transmission
glTF フォーマットの拡張機能への長年の継続的なサポートの一環として、新たに KHR_materials_diffuse_transmission がサポートされました。
glTF エクスポーターの改善
最新の拡張機能と機能をサポートにより、既存の glTF エクスポート機能(シリアライザー)に多くの新しい改善が加えられました。
※デモで glTF としてエクスポートして、お気に入りの 3D ツールで開いてみてください
glTF ローダーのオプションの追加
.glTF オブジェクトのロードに関する新しいオプションが追加され、特定の LOD (詳細レベル) でのロードなど、事前に定義した仕様に基づいてプログラムからアセットをロードできるようになりました
EXR テクスチャのサポート
EXR ファイルのサポートが追加されました。この高機能な画像フォーマットにより、負のピクセル値を利用した複雑な視覚化データをテクスチャとして保存したり、Babylon.js で読み込むことができるようになりました。
パフォーマンスの向上
GPU メッシュピッキング
シーン内のメッシュのピッキング処理は、従来、CPU がすべてのジオメトリを解析し、ピッキング位置から照射されたレイと最も近い三角形を特定する必要があるため、パフォーマンス上の負荷が高い処理となる場合がありました。
Babylon.js 8.0 では、GPU を活用して直接メッシュをピッキングする機能が導入されました。これにより、複雑なシーンにおいてピッキング処理を GPU にオフロードすることで、パフォーマンスの向上が期待できます。
GPU バウンディングボックス
バウンディングボックスの計算は、特に多数の頂点を持つアニメーションメッシュが存在する場合など、CPU に負荷がかかることがあります。
Babylon.js 8.0 では、バウンディングボックスの計算を GPU で行う機能が追加され、CPU の処理負荷を軽減し、シーン全体のパフォーマンスを向上させることができるようになりました。
WebXR デプスセンシング
WebXR の新機能である「デプスセンシング(Depth Sensing)」のサポートが追加されました。
この機能を利用すると、デバイスから取得した深度情報に基づいて、コンピュータで生成された画像を現実世界の映像に重ね合わせることで、よりリアルな複合現実(AR)体験を開発できます。
最新の Android デバイスまたは Oculus Quest 3
今後の展望
以上、Babylon.js 8.0の新機能でした。かなり盛沢山でプラットフォーム史上最大規模のリリースとのことですが、さらに、現在も活発に開発中の機能があります。今後追加される予定の機能は以下の通りです。
- glTF インタラクティビティサポート: glTF ファイル形式の進化に伴い、インタラクティビティに関する新しいワークフローが注目されています。Babylon.js チームは、アセットの動作をアセットファイル自体に含めることを可能にする、この新しい拡張機能のサポートに積極的に取り組んでいます。これにより、インタラクティビティが特定のオーサリングツールやエンジンに縛られなくなります。
- OpenPBR サポート:OpenPBR は、物理ベースレンダリングされたマテリアルのレンダリング時の外観に関するオープンスタンダードです。Babylon.js では、この OpenPBR をサポート予定です。
- すべての人にツールを: Babylon.js プラットフォームを利用するユーザーは、ソフトウェアエンジニアからコンピュータグラフィックスを始めたばかりの学生やアーティストまで、様々なバックグラウンドと経験レベルを持っています。Babylon.js を活用したいすべての人が、そのための適切なツールとワークフローを利用できるよう、チームは尽力しており、この件に関して、今年後半に更なる情報が提供される予定とのことです。
利用について
Babylon.js は主にウェブブラウザ上で動作するため、特別なシステム要件はほとんどありません。対応ブラウザと WebGL (1.0, 2.0) または WebGPU をサポートしている環境であれば利用可能です。
詳細はこちらから
Babylon.js は、Apache License 2.0 のオープンソースライセンスの下で提供されており、個人利用、商用利用問わず、無償で自由に使用、改変、配布することができます。
詳細は、Babylon.js の公式サイトやドキュメント をご確認ください。
コメント