6. WebGL Graphics
WebGL图形
WebGL是一种用于在Web浏览器中呈现图形的API,它基于OpenGL ES图形库的功能。 WebGL 1.0大致匹配OpenGL ES 2.0功能,WebGL 2.0大致匹配OpenGL ES 3.0功能。
Deferred Rendering 延期渲染
如果WebGL2.0可用,Unity WebGL仅支持 Deferred Rendering Path(延迟渲染路径)。在WebGL1.0上,Unity WebGL运行时将回退到Forward Rendering。
Global Illumination 全球照明
Unity WebGL仅支持baked GI(烘焙GI)。 WebGL目前不支持实时GI。此外,仅支持非定向光照贴图。
Linear Rendering 线性渲染
Unity WebGL仅支持使用WebGL 2.0进行 linear color space rendering(线性色彩空间渲染)。线性色彩空间渲染不具备WebGL 1.0的后备支持。要使用线性色彩空间渲染来构建WebGL播放器,您需要在Player Settings > Other Settings中删除WebGL 1.0 API; 取消选中Automatic Graphics API(自动图形API)。
有些网页浏览器不支持sRGB DXT texture compression(sRGB DXT纹理压缩)。由于所有DXT纹理的运行时解压,这可能会降低使用线性渲染时渲染性能的质量。
MovieTextures
WebGL不支持使用MovieTexture类播放视频。但是,您可以使用HTML5视频元素高效地播放WebGL内容中的视频。下载此Asset Store package(资产商店包)以了解如何执行此操作的示例。
WebGL Shader code restrictions
WebGL 1.0规范对GLSLS着色器代码施加了一些限制,GLSLS着色器代码受到许多OpenGL ES 2.0实现允许的限制。当你编写你自己的着色器时,这主要是相关的。
具体而言,WebGL限制哪些值可用于索引数组或矩阵:WebGL只允许使用常量表达式,循环索引或组合的动态索引。唯一的例外是顶点着色器中的统一访问,它可以使用任何表达式进行索引。
此外,限制适用于控制结构。允许的循环的唯一类型是计数for循环,其中初始化器将变量初始化为常量,更新将常量添加到变量或从变量中减去常量,并且继续测试将该变量与常量进行比较。 for循环不符合那些标准,while循环是不允许的。
Font rendering 字体渲染
Unity WebGL支持像所有Unity平台一样的动态字体渲染。但是,它无法访问用户计算机上安装的字体,因此任何使用的字体都必须包含在项目文件夹中(包括国际字符的任何后备字体或字体的粗体/斜体版本),并set up as fallback font names(设置为后备字体名称)。
Anti-Aliasing 抗锯齿
WebGL支持浏览器和GPU的大多数(但不是全部)组合的抗锯齿功能。要使用它,必须在WebGL平台的默认Quality Setting(质量设置)中启用消除锯齿功能。
请注意,在WebGL1.0中有几个限制:
- 在运行时切换质量设置不会启用或禁用消除锯齿 - 它必须在播放器启动时加载的默认质量设置中进行设置。
- 不同的多采样级别(2倍,4倍等)对WebGL没有影响,它可以打开或关闭。
- 任何应用于相机的post-processing effect(后期处理效果)都会禁用内置的抗锯齿功能。
- HDR与抗锯齿功能不兼容,因此请确保禁用“允许HDR”相机选项。
WebGL2.0没有这样的限制。
Reflection Probes 反射探针
WebGL支持反射探头,但由于WebGL规范中关于渲染到特定的mipmap的限制,不支持平滑的实时反射探头(所以实时反射探头总是会产生尖锐的反射,这可能会显示非常低的分辨率)。平滑的实时反射探针将需要WebGL 2.0。
WebGL 2.0 support
Unity包含对WebGL 2.0 API的支持,该API将OpenGL ES 3.0级别的渲染功能带入网络。
默认情况下,Unity WebGL支持WebGL 1.0和WebGL 2.0 API,可以在WebGL Player Settings > Other Settings中配置;要做到这一点,请取消选中Automatic Graphics API(自动图形API)。
当浏览器支持WebGL 2.0时,内容可以从标准着色器,GPU Instancing实例化支持,定向光照贴图支持,对着色器代码中的索引和循环没有限制以及更好的性能中获得更好的质量。
6Unity WebGL 中文文档 Unity 2018.1.b
1. WebGL
2. webGL Browser Compatibility
3. Building and running a WebGL project
4. WebGL: Deploying compressed builds
5. Debugging and trouble shooting WebGL builds
6. WebGL Graphics
7. WebGL Networking
8. Using Audio In WebGL
9. WebGL performance considerations
10. WebGL: Interacting with browser scripting
11. Using WebGL Templates
12. Cursor locking and full-screen mode in WebGL
13. Input in WebGL