Debugging and troubleshooting WebGL builds
WebGL のネットワーク

WebGL グラフィックス

WebGL is an API for rendering graphics in web browsers, which is based on the functionality of the OpenGL ES graphics library. WebGL 1.0 roughly matches OpenGL ES 2.0 functionality, and WebGL 2.0 roughly matches OpenGL ES 3.0 functionality.

Camera Clear

The default WebGL behaviour is to clear the drawing buffer after each frame. This means on Unity WebGL, the content of the frame buffer clears regardless of the Camera.clearFlags setting. However, you can change this behaviour at instantiation time. To do this, set webglContextAttributes.preserveDrawingBuffer to true in your WebGL template:

UnityLoader.instantiate("unityContainer", "%UNITY_WEBGL_BUILD_URL%", {
    Module: {
        "webglContextAttributes": {"preserveDrawingBuffer": true},

Deferred Rendering

Unity WebGL only supports Deferred Rendering Path if WebGL2.0 is available. On WebGL1.0, Unity WebGL runtime will fallback to Forward Rendering.


Unity WebGL は Baked GI のみをサポートしています。 Realtime GI は WebGL では今のところサポートされていません。なお、Non-Directional ライトマップのみがサポートされています。


Unity WebGL only supports linear color space rendering with WebGL 2.0. Linear color space rendering doesn’t have fallback support for WebGL 1.0. To build a WebGL player using linear color space rendering, you need to remove WebGL 1.0 API in the Player settings, open the Other Settings panel, disable the Automatic Graphics API setting.

Some web browsers don’t support sRGB DXT texture compression. This can decrease the quality of rendering performance when using linear rendering, due to runtime decompression of all the DXT textures.


WebGL は MovieTexture クラスを用いた動画再生をサポートしていません。しかし、HTML5 video 要素を用いて WebGL コンテンツで効率よく動画を再生することはできます。実践例については、こちらの Asset Store パッケージ をダウンロードしてください。

WebGL シェーダーコードの制限

The WebGL 1.0 specification imposes some limitations on GLSLS shader code, which are more restrictive than many OpenGL ES 2.0 implementations. This is mostly relevant when you write your own shaders.

特に WebGL は配列や行列のインデックス化に使用できる値に関して制限を受けます。具体的には、WebGL は定数式に動的インデックス、ループインデックスやそれらの組み合わせのみ可能です。頂点シェーダーの Uniform アクセスだけは例外で、すべての表現を用いてインデックスできます。

管理構造にも制限が課されます。ループの種類中使用できるのはイニシャライザーが変数を定数に初期化する場合、定数に変更が加えられた場合、変数から定数を引いた場合、継続テストが変数を定数と比べた場合の for ループのカウントのみです。この条件と合致しない for ループと while ループは使用できません。


Unity WebGL は他すべての Unity プラットフォームのようにダイナミックフォントレンダリングをサポートしています。しかし、ユーザーのマシンにインストールされているフォントにアクセスすることはできないため、使用されるすべてのフォントは(代替できるよう、多国に対応するフォントや太字・イタリックバージョンのフォントも含めて)プロジェクトフォルダーに配置し、予備フォント名を設定しましょう


WebGL supports anti-aliasing on most (but not on all) combinations of browsers and GPUs. To use it, anti-aliasing must be enabled in the default Quality setting for the WebGL platform.

Note that on WebGL1.0 there are several limitations:

  • Switching Quality settings at runtime will not enable or disable anti-aliasing. It has to be set up in the default Quality setting loaded at player start up.

  • The different multi sampling levels (2x, 4x, etc..) have no effect in WebGL, it’s either on or off.

  • Any post-processing effect applied to the camera disables the built-in Anti-Aliasing.

  • HDR is not compatible with anti-aliasing so make sure the Allow HDR camera option is disabled.

There are no such limitations on WebGL2.0.


リフレクションプローブは WebGL でサポートされています。しかし、特定のミップマップへレンダリングする WebGL 仕様の制限により、滑らかなリアルタイムのリフレクションプローブはサポートされません (そのため、リアルタイムのリフレクションプローブは常に鋭いリフレクションを生成し、とても解像度が低く見えます。)。滑らかなリアルタイムのリフレクションプローブには WebGL 2.0 が必要です。

WebGL 2.0 のサポート

Unity includes support for the WebGL 2.0 API, which brings OpenGL ES 3.0-level rendering capabilities to the web.

By default, Unity WebGL builds support both WebGL 1.0 and WebGL 2.0 APIs, This can be configured in the WebGL Player settings under the Other Settings panel by disabling the Automatic Graphics API property.

When WebGL 2.0 is supported in browsers, content can benefit from a better quality in the Standard Shader, GPU Instancing support, directional lightmap support, no restrictions on indexing and loops in shader code, and better performance.

You can use SystemInfo.graphicsDeviceType at run time to determine whether the Unity instance is rendering with OpenGLES3 (WebGL2.0) or OpenGLES2 (WebGL1.0).

  • 2018–10–26 限られた 編集レビュー で修正されたページ

  • Linear rendering for WebGL 2.0 added in 2017.2 NewIn20172

Debugging and troubleshooting WebGL builds
WebGL のネットワーク