Linear Rendering Support with WebGL 2.0
One of the new features in Unity 2017.2 is linear rendering with WebGL 2.0. With linear rendering, you’re sure that the inputs, the outputs and the computation are in the correct color space. The brightness of the final image will go linearly with the amount of light in the scene. That means more consistent lighting across your scenes and assets.
Left: A linear gradient. Right: How our eyes perceive that gradient. Note where the borders (which are exactly mid-grey) merge with the gradient in each case
In Unity 5.5 we shipped linear rendering for Android with OpenGL ES 3.0 and iOS with Metal.
In Unity 2017.2, linear rendering is now supported on:
- Windows, Mac OS X and Linux (Standalone)
- Xbox One
- PlayStation 4
- Android with OpenGL ES 3.x and Vulkan
- iOS with Metal
- WebGL 2.0
Linear rendering is particularly interesting because it allows you to use the Unity post processing stack, including temporal anti-aliasing, and get really good results with WebGL.
Linear rendering in Unity WebGL player works on any web browser that supports WebGL 2.0.
However, there is a performance caveat. We worked with the Khronos WebGL group to create a WebGL 2.0 extension to add support of sRGB DXT texture compression texture formats. If the web browser doesn’t support this functionality, Unity decompresses the sRGB DXT textures which results in a significant increase of bandwidth consumption. Thanks to Kenneth Russell and Kai Ninomiya from Google and Jeff Gilbert from Mozilla for their help on this extension.
- Download Unity 2017.2 beta
- Download the WebGL linear rendering example project
- Download the WebGL linear rendering example build