通用 渲染管线一系列操作,将场景的内容显示在屏幕上。 Unity 允许您选择预构建的渲染管线或编写自己的渲染管线。 更多信息
参见 词汇表 (URP) 中的 着色器在 GPU 上运行的程序。 更多信息
参见 词汇表 使用 着色器关键字 支持许多不同的功能,这意味着 Unity 会编译大量 着色器变体根据着色器关键字及其状态的特定组合生成的着色器程序版本。着色器对象可以包含多个着色器变体。 更多信息
参见 词汇表。
如果您在 URP 资源 中禁用功能,URP 会自动排除(“剥离”)相关的着色器变体。这会加快构建速度,并减少内存使用量和文件大小。
例如,如果您的项目不使用方向光阴影,默认情况下 Unity 仍然会在您的构建中包含支持方向光阴影的变体。如果您在 URP 资源中禁用 投射阴影,URP 将剥离这些变体。
如果您想检查剥离 URP 中着色器的代码,请查看 Editor/ShaderPreprocessor.cs
文件。该文件使用 IPreprocessShaders API。
有关剥离着色器变体的更多信息,请参考以下页面
要记录 Unity 总共编译和剥离了多少个变体,请按照以下步骤操作
Editor.log
日志文件并搜索 ShaderStrippingReport
。有关 Editor.log
的位置,请参考 日志文件。要记录更详细的着色器变体信息,请按照以下步骤操作
Temp/graphics-settings-stripping.json
和 Temp/shader-stripping.json
。有关更多信息,请参考 Unity 用户手册中的以下内容
默认情况下,URP 会编译启用功能的变体和禁用功能的变体。
要减少变体的数量,您可以在 URP 图形设置 中启用 剥离未使用的变体 并执行以下操作
如果您禁用 剥离未使用的变体设置,URP 无法剥离禁用功能的变体。这可能会增加变体的数量。
要让 Unity 剥离与功能相关的变体,请确保您在构建中的所有 URP 资源中禁用它。
Unity 将以下 URP 资源包含在您的构建中
避免在构建中包含使用不同 渲染路径渲染管线用来渲染图形的技术。选择不同的渲染路径会影响光照和着色的计算方式。某些渲染路径比其他路径更适合不同的平台和硬件。 更多信息
参见 词汇表 的 URP 资源,因为这会导致 Unity 为每个关键字创建两组变体。
功能 | 如何禁用功能 | 关闭此功能的着色器关键字 | 渲染路径 |
---|---|---|---|
精确 G 缓冲区法线 | 在 URP 资源中禁用 精确 G 缓冲区法线。这对使用 Vulkan 图形 API 的平台没有影响。 | _GBUFFER_NORMALS_OCT |
延迟 |
附加光源 | 在 URP 资源 的 光照部分 中,禁用 附加光源。 |
_ADDITIONAL_LIGHTS , _ADDITIONAL_LIGHTS_VERTEX |
前向 |
环境光遮蔽 | 从 URP 资源使用的所有渲染器中删除 环境光遮蔽一种近似环境光(非来自特定方向的光)照射到表面上一个点的方法。 参见 词汇表 渲染器功能。 |
_SCREEN_SPACE_OCCLUSION |
前向和延迟 |
贴花 | 从 URP 资源使用的所有渲染器中删除 贴花 渲染器功能。 |
_DBUFFER_MRT1 , _DBUFFER_MRT2 , _DBUFFER_MRT3 , _DECAL_NORMAL_BLEND_LOW , _DECAL_NORMAL_BLEND_MEDIUM , _DECAL_NORMAL_BLEND_HIGH , _DECAL_LAYERS |
前向和延迟 |
快速 sRGB 到线性转换 | 在 URP 资源 的 后期处理在图像显示在屏幕上之前应用滤镜和效果来改善产品视觉效果的过程。您可以使用后期处理效果来模拟物理相机和胶片属性,例如 Bloom 和景深。 更多信息 后期处理,后期处理,后期处理 参见 词汇表 部分中,禁用 快速 sRGB/线性转换。 |
_USE_FAST_SRGB_LINEAR_CONVERSION |
前向和延迟 |
地形场景中的景观。地形游戏对象会将一个大的平面添加到您的场景中,您可以使用地形检查器窗口来创建详细的景观。 更多信息 参见 词汇表 中的孔洞 |
在 URP 资源 的 渲染 部分中,禁用 地形孔洞。 | _ALPHATEST_ON |
前向 |
光饼 | 从项目中的所有光源中删除 光饼纹理。 | _LIGHT_COOKIES |
前向和延迟 |
光源的渲染层 | 禁用 光源的渲染层。 | _LIGHT_LAYERS |
前向和延迟 |
反射探测器一个渲染组件,它以球形的方式捕获周围环境的视图,类似于相机。捕获的图像然后存储为立方体贴图,可以由具有反射材质的物体使用。 更多信息 参见 词汇表 混合 |
禁用 探测器混合。 | _REFLECTION_PROBE_BLENDING |
前向和延迟 |
反射探测器框投影 | 禁用 框投影。 | _REFLECTION_PROBE_BOX_PROJECTION |
前向和延迟 |
渲染通道 | 在 URP 资源使用的所有渲染器中禁用 原生渲染。 | _RENDER_PASS_ENABLED |
前向和延迟 |
附加光源的阴影 | 在 URP 资源的 附加光源 部分中,禁用 投射阴影。 | _ADDITIONAL_LIGHT_SHADOWS |
前向和延迟 |
主光源的阴影 | 在 URP 资源的 主光源 部分中,禁用 投射阴影。Unity 删除的关键字可能取决于您的设置。 |
_MAIN_LIGHT_SHADOWS , _MAIN_LIGHT_SHADOWS_CASCADE , _MAIN_LIGHT_SHADOWS_SCREEN |
前向和延迟 |
柔和阴影 | 在 URP 资源的 阴影 部分中,禁用 柔和阴影。 | _SHADOWS_SOFT |
前向和延迟 |
在 URP 图形设置 中启用 剥离未使用的后期处理变体,以剥离您不使用的 体积覆盖 的着色器变体。
例如,如果您的项目只使用 Bloom 效果,URP 会保留 Bloom 变体,但会剥离所有其他后期处理变体。
Unity 会检查所有场景中的体积覆盖,因此您无法通过从构建中删除一个 场景场景包含游戏中的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,您放置环境、障碍物和装饰,基本上是将游戏分段设计和构建。 更多信息
参见 词汇表 来剥离变体,但将其保留在您的项目中。
已删除的体积覆盖 | 关闭此功能的着色器关键字 |
---|---|
Bloom |
_BLOOM_HQ , BLOOM_HQ_DIRT , _BLOOM_LQ , BLOOM_LQ_DIRT |
色差 | _CHROMATIC_ABERRATION |
胶片颗粒 | _FILM_GRAIN |
HDR高动态范围 参见 词汇表 色彩分级 |
_HDR_GRADING |
镜头畸变 | _DISTORTION |
色调映射将图像的 HDR 值重新映射到适合在屏幕上显示的范围的过程。 更多信息 参见 词汇表 |
_TONEMAP_ACES , _TONEMAP_NEUTRAL , _TONEMAP_GRADING |
您还应该在 URP 图形设置中启用 剥离屏幕坐标覆盖变体,除非您覆盖屏幕坐标以支持大量多显示器(“集群”显示器)上的后期处理。
如果您不使用 XR涵盖虚拟现实 (VR)、增强现实 (AR) 和混合现实 (MR) 应用程序的总称。支持这些形式的交互式应用程序的设备可以称为 XR 设备。 更多信息
参见 词汇表 或 VR虚拟现实 更多信息
参见 词汇表,您可以 禁用 XR 和 VR 模块。这允许 URP 从其标准着色器中剥离 XR 和 VR 相关的着色器变体。
如果你创建了一个 自定义渲染器功能,可以使用 FilterAttribute API 在启用或禁用 URP 资源 中的设置时移除着色器变体。
例如,你可以执行以下操作: