贴花投影器 (Decal Projector)
高清渲染管线 (High Definition Render Pipeline, HDRP) 包括 Decal Projector 组件;此组件可以将特定材质(贴花)投影到场景中。贴花是使用 HDRP/贴花着色器 (HDRP/Decal Shader) 的材质。当 Decal Projector 组件将贴花投影到场景中时,这些贴花会与场景的光照相互影响并环绕网格。可以同时在场景中使用数千个贴花,因为 HDRP 会对它们进行实例化。这意味着只要贴花使用相同的材质,渲染过程就不会占用大量资源。
要编辑 Decal Projector 的属性,请选择包含 Decal Projector 组件的游戏对象,然后使用 Inspector。如果只想更改投影的大小,则可以使用 Inspector 或 Decal Projector 的 Scene 视图辅助图标之一。
使用 Scene 视图
Decal Projector 包括一个 Scene 视图来表示其边界和投影方向,有助于定位投影器。Scene 视图表示包含:
一个描述投影器 3D 尺寸的盒体;投影器会在盒体内的每种材质上绘制贴花。
一个用于指示投影器所朝向方向的箭头。
贴花投影器还包括两个辅助图标,可在每个面上添加控制柄,供您单击并拖动以更改投影器边界的大小。
按钮 | 辅助图标 | 描述 |
---|---|---|
Scale | 用投影器盒体缩放贴花。这将更改材质的 UV 以适应投影器盒体的尺寸。这会拉伸贴花。 | |
Crop | 用投影器盒体修剪贴花。这将更改投影器盒体的尺寸,但不会更改材质的 UV。这会裁剪贴花。 |
使用 Inspector
使用 Inspector 可以更改所有 Decal Projector 属性,并允许使用 Size、Tiling 和 Offset 数值,这样可以实现比单击并拖动辅助图标方法更高的精度。
属性
属性 | 描述 |
---|---|
Size | 投影器的 3D 尺寸会影响盒体,从而影响贴花。投影器会缩放贴花以匹配 Size 的 X 和 Z 分量。Decal Projector 组件沿本地 Y 轴投影贴花。 |
Material | 要投影的贴花材质。贴花材质必须使用 HDRP/贴花着色器。 |
Draw Distance | 从摄像机到贴花的距离,若超过此距离,则投影器停止投影贴花且 HDRP 不再渲染贴花。 |
Start Fade | 使用滑动条设置投影器开始淡出贴花的距离(相对于摄像机)。值范围从 0 到 1,表示 Draw Distance 的百分比。值 0.9 表示在 Draw Distance 的 90% 处开始淡出贴花,并在 Draw Distance 处完成淡出。 |
Tiling | 沿着 UV 轴缩放贴花材质。 |
Offset | 沿着 UV 轴偏移贴花材质。当使用材质图集作为贴花时,请同时使用此属性和 UV Scale 属性。 |
Fade Factor | 允许手动淡入和淡出贴花。值为 0 使贴花完全透明,值为 1 使贴花变为不透明,具体不透明度取决于 Material。Material 使用 Global Opacity 和不透明度贴图来控制贴花的最大不透明度。 |
Affects Transparent | 启用此复选框可以允许 HDRP 在透明表面上绘制投影器的贴花。HDRP 在启用 Affects Transparency 的情况下将贴花中的所有纹理打包到图集中(这会影响内存和性能)。可以在 Unity 项目 HDRP 资源的 Decals 部分中编辑此图集的尺寸。 |
限制
- 如果将贴花投影到透明表面上,HDRP 将忽略贴花的纹理平铺。
- 将贴花投影到表面上时,贴花的发光分量会影响表面,无论是否在表面的材质上启用 Receive Decal。
- 在 Project Settings > Graphics 中,如果 Instancing Variants 设置为 Strip All,则在构建项目时,Unity 会剥离该组件引用的贴花着色器。即使在 Always Included Shaders 列表中包括了此着色器,也会发生这种情况。如果在构建过程中 Unity 剥离了此着色器,则贴花不会出现在构建的应用程序中。