WebGL一个在 Web 浏览器中渲染 2D 和 3D 图形的 JavaScript API。Unity Web 构建选项允许 Unity 将内容发布为 JavaScript 程序,这些程序使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容。 更多信息
参见 术语表 是一个用于在 Web 浏览器中渲染图形的 API,它基于 OpenGL ES 图形库的功能。WebGL 2.0 大致与 OpenGL ES 3.0 的功能相匹配。
默认情况下,Unity Web 在每一帧之后清除绘图缓冲区,这意味着无论 Camera.clearFlags 设置如何,帧缓冲区的内容都会被清除。但是,您可以在实例化时更改此行为。为此,在 Web 模板的 index.html
文件中将 webglContextAttributes.preserveDrawingBuffer
设置为 true
。
注意:如果您设置了任何 WebGL 上下文属性,则还必须添加一行以保留 电源偏好 播放器设置。
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 仅支持 烘焙 GI。实时 全局光照一组模拟直接和间接光照的技术,以提供逼真的光照效果。
参见 术语表 目前在 Web 中不受支持。此外,Unity Web 仅支持非定向 光照贴图预渲染的纹理,包含光源对场景中静态对象的影响。光照贴图覆盖在场景几何体之上以创建光照效果。 更多信息
参见 术语表。
某些 Web 浏览器不支持 sRGB DXT 纹理压缩。由于需要对所有 DXT 纹理进行运行时解压缩,因此在使用线性渲染时,这可能会降低渲染性能的质量。
您不能使用 VideoClipImporter
将视频剪辑导入到您的 Unity 项目中,因为这可能会增加初始资产数据下载大小并阻止网络流式传输。对于视频播放,请使用 VideoPlayer 组件中的 URL 选项并将资产放置在 StreamingAssets/ 目录中以使用浏览器的内置网络流式传输。
WebGL 2.0 规范 对 GLSLS 着色器在 GPU 上运行的程序。 更多信息
参见 术语表 代码施加了一些限制。这主要与您编写自己的着色器时相关。以下是一些限制
highp
、mediump
或 lowp
来指定变量的精度。如果您未指定精度,则着色器将使用默认精度,即 mediump
。您还可以使用 precision
来指定一组变量的精度。
注意:由于 Web 中可用内存有限,请避免包含不需要的着色器变体,这会导致不必要的内存使用。因此,建议您熟悉 着色器变体根据特定着色器关键字及其状态组合生成的着色器程序版本。一个着色器对象可以包含多个着色器变体。 更多信息
参见 术语表 和 着色器剥离,并格外注意确保您不会向 图形设置 中的 始终包含的着色器 部分添加具有过多变体的着色器(例如,Unity 的 标准着色器)。
Unity Web 支持与其他 Unity 平台类似的动态字体渲染。但是,由于它无法访问用户计算机上安装的字体,因此如果您想使用任何字体,请确保将它们包含在项目文件夹中(包括任何用于国际字符的备用字体或字体的粗体/斜体版本),并 将其设置为备用字体名称。
WebGL 在大多数(但不是全部)浏览器和 GPU 组合中都支持抗锯齿。要使用它,必须在 Web 平台的默认 质量 设置中启用抗锯齿。
Unity Web 支持所有反射探针。
Unity 包含对 WebGL 2.0 API 的支持,该 API 将 OpenGL ES 3.0 级别的渲染功能引入 Web。默认情况下,Unity Web 构建支持 WebGL 2.0 API。
支持 WebGL 2.0 的浏览器具有以下优势