WebGL は OpenGL ES グラフィックスライブラリの機能を基本とした、ウェブブラウザーでグラフィックスを描画する API です。WebGL 2.0 は OpenGL ES 3.0 の機能とほぼ同じです。
デフォルトでは、Unity Web はフレームごとに描画バッファを消去します。つまり、フレームバッファのコンテンツは Camera.clearFlags の設定に関係なく消去されます。ただし、この動作はインスタンス化のときに変更できます。これを行うには、ウェブテンプレートの index.html ファイルの webglContextAttributes.preserveDrawingBuffer を true に設定します。
ノート: いずれかの WebGL コンテキスト属性 を設定する場合は、Power Preference プレイヤー設定 を維持する行を追加する必要もあります。
script.onload = () => {
config['webglContextAttributes'] = {
preserveDrawingBuffer: true, //Add this line to preserve the Camera.clearFlags setting
powerPreference: {{{ WEBGL_POWER_PREFERENCE }}} //Add this line to preserve the Power Preference Player setting
};
createUnityInstance(canvas, config, (progress) => {
Unity Web は Baked GI のみをサポートしています。現在、リアルタイムグローバルイルミネーションはウェブではサポートされていません。さらに、Unity Web はディレクショナルライトマップ以外のみをサポートしています。
一部のウェブブラウザーは sRGB DXT テクスチャ圧縮 をサポートしていません。これにより、すべての DXT テクスチャをランタイムに解凍するため、リニアレンダリングを使用するときにレンダリングパフォーマンスの品質が低下します。
VideoClipImporter を使用して Unity プロジェクトにビデオクリップをインポートすることはできません。そうすると、最初のアセットデータのダウンロードサイズが大きくなり、ネットワークストリーミングができなくなる可能性があるためです。ビデオ再生には、VideoPlayer コンポーネントの URL オプションを使って、StreamingAssets/ ディレクトリにアセットを配置し、ブラウザーのビルトインネットワークワークストリーミングを使用します。
WebGL 2.0 仕様 では、GLSLS シェーダーコードにいくつかの制限があります。これは、主に自作シェーダーを記述する場合に関係します。以下は制限の一部です。
highp、mediump、lowp のいずれかを使用して、変数の精度を指定できます。精度を指定しない場合、シェーダーはデフォルトの精度である mediump を使用します。precision を使用して、変数ブロックの精度を指定することもできます。注意ウェブで使用できるメモリは限られているため、不要なメモリ使用につながる可能性がある不要なシェーダーバリアントを加えないでください。したがって、シェーダーバリアント と シェーダーストリッピング に慣れ、Graphics Settings の Always-Included Shaders セクションに、バリアントが多すぎるシェーダー (例えば Unity の スタンダードシェーダー など) を追加しないように特別な注意を払うことをお勧めします。
Unity Web は他の Unity プラットフォームのようなダイナミックフォントレンダリングをサポートしています。ただし、ユーザーのマシンにインストールされているフォントにアクセスすることはできないため、フォントを使用する場合は (多言語フォント、太字や斜体のフォントのフォールバックフォントも含めて) プロジェクトフォルダーに置き、フォールバックフォント名として設定 してください。
WebGL は、ブラウザーと GPU のほとんど (ただし、すべてではない) の組み合わせでアンチエイリアスをサポートします。これを使用するには、ウェブプラットフォームのデフォルトの Quality 設定でアンチエイリアスを有効にする必要があります。
Unity Web はすべてのリフレクションプローブをサポートしています。
Unity には WebGL 2.0 API のサポートが含まれており、ウェブに対する OpenGL ES 3.0 レベルのレンダリング機能を提供します。デフォルトでは、Unity Web ビルドは WebGL 2.0 API をサポートしています。
WebGL 2.0 をサポートするブラウザーには、以下の利点があります。