由于项目中使用的用例、目标平台、渲染器和功能种类繁多,某些 URP 配置会导致大量着色器在 GPU 上运行的程序。 更多信息
参见 术语表变体。这可能导致编译时间过长。
漫长的着色器编译时间会影响播放器构建时间和场景场景包含游戏环境和菜单。可以将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,放置环境、障碍物和装饰物,本质上是分段设计和构建游戏。 更多信息
参见 术语表在编辑器中渲染的时间。
每个摄像机可见光源限制值会影响每个Lit和Complex Lit着色器变体的编译时间。在 Forward+ 渲染路径渲染管线用来渲染图形的技术。选择不同的渲染路径会影响光照和阴影的计算方式。某些渲染路径比其他渲染路径更适合不同的平台和硬件。 更多信息
参见 术语表中,在桌面平台上,该限制为 256。
本节介绍如何通过更改默认的最大每个摄像机可见光源数量来减少着色器编译时间。
注意:此说明描述了解决 URP 设计中限制的变通方法。此限制将在未来的 Unity 版本之一中得到缓解。
通用渲染管线配置包包含定义可见光源最大数量的设置。以下说明介绍如何更改这些设置。
注意:如果升级项目的 Unity 版本,请重复此过程。
在项目文件夹中,将URP 配置包文件夹从/Library/PackageCache/com.unity.render-pipelines.universal-config
复制到/Packages/com.unity.render-pipelines.universal-config
。
打开文件/com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs.hlsl
。
该文件包含多个以MAX_VISIBLE_LIGHT_COUNT
开头并以目标平台名称结尾的定义。将括号中的值更改为适合项目的合适最大视锥体每个摄像机光源数量,例如MAX_VISIBLE_LIGHT_COUNT_DESKTOP (32)
。
对于Forward+渲染路径,该值包括主光源。对于Forward渲染路径,该值不包括主光源。
打开文件/com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs
。
该文件包含多个以k_MaxVisibleLightCount
开头并以平台名称结尾的定义。更改该值以使其与ShaderConfig.cs.hlsl
文件中设置的值匹配,例如k_MaxVisibleLightCountDesktop = 32;
。
保存已编辑的文件并重新启动 Unity 编辑器。Unity 会自动配置项目和着色器以使用新配置。
现在,由于每个着色器变体的编译时间缩短,因此播放器构建时间应该更短。