贴花渲染器功能
借助贴花渲染器功能 (Decal Renderer Feature),Unity 可以将特定材质(贴花)投影到场景中的其他对象上。贴花会与场景的光照交互并环绕网格。
示例场景中的贴花投影器。
如何使用该功能
要为场景添加贴花,请执行以下操作:
向 URP 渲染器添加贴花渲染器功能。
创建一个材质并将其分配给
Shader Graphs/Decal
着色器。在材质中,选择 Base Map 和 Normal Map。创建新的贴花投影器游戏对象,或向现有游戏对象添加 Decal Projector 组件。
下图展示了场景中的贴花投影器。
有关更多信息,另请参阅 Decal Projector 组件。
创建一个四边形游戏对象。
为该游戏对象分配贴花材质。
将四边形放置在需要贴花的表面上。如有必要,请调整网格偏差值以防止深度冲突。
限制
此功能具有以下限制:
- 贴花投影不适用于透明表面。
贴花渲染器功能属性
本节将介绍贴花渲染器功能的属性。
贴花渲染器功能,Inspector 视图。
Technique
选择渲染器功能的渲染技术。
本节将介绍此属性的选项。
Automatic
Unity 会根据构建平台自动选择渲染技术。
DBuffer
Unity 将贴花渲染到贴花缓冲区 (DBuffer) 中。Unity 在不透明渲染期间将 DBuffer 的内容覆盖在不透明对象之上。
选择此技术后会显示 Surface Data 属性。Surface Data 属性允许指定 Unity 用于与底层网格混合的贴花的表面属性。Surface Data 属性提供了以下选项:
- Albedo:贴花会影响基色和发光颜色。
- Albedo Normal:贴花会影响基色、发光颜色和法线。
- Albedo Normal MAOS:贴花会影响基色、发光颜色、法线、金属度值、平滑度值和环境光遮挡值。
限制:
此技术需要 DepthNormal 预通道,因此这项技术在实现基于瓦片的渲染的 GPU 上效率较低。
此技术不适用于粒子和地形细节。
Screen Space
Unity 使用 Unity 从深度纹理重建的法线在不透明对象之后渲染贴花。Unity 将贴花渲染为不透明网格之上的网格。此技术仅支持法线混合。
选择此技术后会显示以下属性。
属性 | 描述 |
---|---|
Normal Blend | 此属性中的选项(Low、Medium 和 High)决定了 Unity 在从深度纹理重建法线矢量时采用的深度纹理样本数。质量越高,重建的法线越准确,性能影响越大。 |
Low | Unity 在重建法线时采用一个深度样本。 |
Medium | Unity 在重建法线时采用三个深度样本。 |
High | Unity 在重建法线时采用五个深度样本。 |
Use GBuffer | Unity 在延迟渲染路径中使用此选项。在延迟渲染路径中,贴花会影响基色、发光颜色和法线。 |
Max Draw Distance
Unity 渲染贴花时与摄像机之间的最大距离。
Decal Projector 组件
Decal Projector 组件允许 Unity 将贴花投影到场景中的其他对象上。Decal Projector 组件必须使用指定了贴花 Shader Graph (Shader Graphs/Decal
) 的材质。
有关如何使用 Decal Projector 组件的更多信息,请参阅如何使用该功能一节。
Decal Projector 组件包含 Scene 视图编辑工具和 Decal Projector 属性。
Inspector 中的 Decal Projector 组件。
注意:如果将贴花材质直接分配给某个游戏对象(而不是通过 Decal Projector 组件进行分配),则贴花投影器 (Decal Projectors) 不会在此类游戏对象上投影贴花。
贴花 Scene 视图编辑工具
选择某个贴花投影器时,Unity 会显示其边界和投影方向。
贴花投影器在包围盒内的每个网格上绘制贴花材质。
白色箭头表示投影方向。箭头的尾部是轴心点。
Decal Projector 组件提供以下 Scene 视图编辑工具。
图标 | 操作 | 描述 |
---|---|---|
Scale | 选择此图标可缩放投影器盒体和贴花。这个工具将更改材质的 UV 以适应投影器盒体的尺寸。这个工具不会影响轴心点。 | |
Crop | 选择此图标可使用投影器盒体来裁剪或平铺贴花。这个工具将更改投影器盒体的尺寸,但不会更改材质的 UV。这个工具不会影响轴心点。 | |
Pivot / UV | 选择此图标可在不移动投影器盒体的情况下移动贴花的轴心点。这个工具可更改变换位置。 这个工具还会影响投影的纹理的 UV 坐标。 |
Decal Projector 组件属性
本节将介绍 Decal Projector 组件的属性。
属性 | 描述 |
---|---|
Scale Mode | 选择此贴花投影器是否从根游戏对象的变换组件继承缩放值。 选项: • Scale Invariant:Unity 仅在此组件中使用缩放值(Width、Height 等),并忽略根游戏对象中的值。 • Inherit from Hierarchy:Unity 通过将根游戏对象变换组件的 lossy Scale 值乘以贴花投影器的缩放值来计算贴花的缩放值。 注意:由于贴花投影器使用正交投影,如果根游戏对象倾斜,则贴花无法正确缩放。 |
Width | 投影器包围盒的宽度。投影器沿本地 X 轴缩放贴花以匹配该值。 |
Height | 投影器包围盒的高度。投影器沿本地 Y 轴缩放贴花以匹配该值。 |
Projection Depth | 投影器包围盒的深度。投影器沿本地 Z 轴投影贴花。 |
Pivot | 投影器包围盒中心相对于根游戏对象原点的偏移位置。 |
Material | 要投影的材质。该材质必须使用具有贴花材质 (Decal Material) 类型的 Shader Graph。有关更多信息,请参阅贴花 Shader Graph 页面。 |
Tiling | 贴花材质沿其 UV 轴的平铺值。 |
Offset | 贴花材质沿其 UV 轴的偏移值。 |
Opacity | 此属性允许指定不透明度值。值为 0 使贴花完全透明,值为 1 使贴花变为不透明,具体不透明度取决于 Material。 |
Draw Distance | 从摄像机到贴花的距离,若超过此距离,则投影器停止投影贴花且 URP 不再渲染贴花。 |
Start Fade | 使用滑动条设置投影器开始淡出贴花的距离(相对于摄像机)。值范围从 0 到 1,表示在 Draw Distance 中的占比。值为 0.9 时,Unity 在 Draw Distance 的 90% 处开始淡出贴花,并在 Draw Distance 处完成淡出。 |
Angle Fade | 使用滑动条可根据贴花的向后方向与接收表面顶点法线之间的角度来设置贴花的淡出范围。 |
性能
URP 支持材质的 GPU 实例化。如果场景中的贴花使用相同的材质,并且该材质启用了 Enable GPU Instancing 属性,则 URP 会实例化材质并可以降低性能影响。