贴花投影器 (Decal Projector)
高清渲染管线 (High Definition Render Pipeline, HDRP) 包括 Decal Projector 组件;此组件可以将特定材质(贴花)投影到场景中。贴花是使用贴花着色器 (Decal Shader) 或贴花主栈 (Decal Master Stack) 的材质。当 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 | 投影器影响盒体(因此也是沿投影平面的贴花)的尺寸。投影器会缩放贴花以匹配 Size 的 Width(沿本地 X 轴)和 Height(沿本地 Y 轴)分量。 |
Projection Depth | 投影器影响盒体的深度。投影器会缩放贴花以匹配 Projection Depth。Decal Projector 组件沿本地 Z 轴投影贴花。 |
Material | 要投影的贴花材质。贴花材质必须使用 HDRP/贴花着色器。 |
Decal Layer | 贴花层用于指定要将贴花投影到哪些材质。任何网格渲染器或地形只要使用了匹配的贴花层就会收到贴花。 |
Draw Distance | 从摄像机到贴花的距离,若超过此距离,则投影器停止投影贴花且 HDRP 不再渲染贴花。 |
Start Fade | 使用滑动条设置投影器开始淡出贴花的距离(相对于摄像机)。值范围从 0 到 1,表示 Draw Distance 的百分比。值 0.9 表示在 Draw Distance 的 90% 处开始淡出贴花,并在 Draw Distance 处完成淡出。 |
Angle Fade | 使用最小/最大滑动条可根据贴花向后方向与接收表面顶点法线之间的角度来控制贴花的淡出范围。仅当启用 Decal Layers 功能的情况下才可用。 |
End Angle Fade | 使用滑动条设置相对于贴花向后方向的角度,使投影器在该角度停止淡出贴花。缩放范围是 0 到 180,代表度数。仅当启用 Decal Layers 功能的情况下才可用。 |
Tiling | 沿着 UV 轴缩放贴花材质。 |
Offset | 沿着 UV 轴偏移贴花材质。当使用材质图集作为贴花时,请同时使用此属性和 UV Scale 属性。 |
Fade Factor | 允许手动淡入和淡出贴花。值为 0 使贴花完全透明,值为 1 使贴花变为不透明,具体不透明度取决于 Material。Material 使用 Global Opacity 和不透明度贴图来控制贴花的最大不透明度。 |
Affects Transparent | 启用此复选框可以允许 HDRP 在透明表面上绘制投影器的贴花。HDRP 在启用 Affects Transparency 的情况下将贴花中的所有纹理打包到图集中(这会影响内存和性能)。可以在 Unity 项目 HDRP 资源的 Decals 部分中编辑此图集的尺寸。 |
限制
- 贴花投影器 (Decal Projector) 可以影响使用贴花着色器 (Decal Shader) 或贴花主栈 (Decal Master Stack) 的不透明材质。但是,只能影响使用贴花着色器的透明材质。
- 透明材质不支持贴花发光 (Decal Emissive)。
- HDRP 中的材质 Receive Decals 属性不会影响发光的贴花。除非使用贴花层(这种情况下可以逐层禁用发光的贴花),否则 HDRP 始终会渲染发光的贴花。
- 如果将贴花投影到透明表面上,HDRP 将忽略贴花的纹理平铺。
- 在 Project Settings > Graphics 中,如果 Instancing Variants 设置为 Strip All,则在构建项目时,Unity 会剥离该组件引用的贴花着色器。即使在 Always Included Shaders 列表中包括了此着色器,也会发生这种情况。如果在构建过程中 Unity 剥离了此着色器,则贴花不会出现在构建的应用程序中。