网易首页 > 网易号 > 正文 申请入驻

URP系列教程 | 新功能Decal System贴花系统

0
分享至

贴花 Decals 是现代游戏中非常常见的功能,很多用户会因为 URP 中缺失贴花系统而放弃使用 URP。所以 URP 拥有其内置的贴花解决方案变得非常重要。Unity在 URP 12.0 及以上版本中将贴花 Decals 在 Renderer Feature 中完全模块化;并且实现了贴花投影(Decals Projector )、贴花网格以及贴花着色器(Decal Shader Graph)。

本篇教程将会从以下几个方面来给大家讲解 URP Decal System。

1. 游戏中贴花的应用场景

2. URP 中的两种贴花解决方案介绍

3. 实战案例-如何使用 URP Decal System 创建 FPS 游戏中的弹孔效果

4. URP Decal System 性能优化建议

5. 透明表面贴花支持计划

游戏中贴花的应用场景

贴花 Decals,顾名思义,允许在物体表面上添加图案(贴花),包括基于物理的照明。如果你想向物体表面添加任何细节,那么贴画系统是一个非常强大的解决方案。贴花 Decal 在游戏中是一种非常常见的效果,举几个常见的用例是:比如在游戏中墙壁上的涂鸦、地毯上的花纹或者在射击游戏中的血迹、弹孔等等效果。

正因为贴花 Decals 是现代游戏中非常常见的功能,很多用户会因为 URP 中缺失贴花系统而放弃使用 URP。虽然也有些用户会为管线缺少的功能编写自己的解决方案。但是创造一个高质量的贴花系统并非易事,因为贴花系统最佳解决方案与渲染逻辑是密切相关。所以 URP 拥有其内置的贴花解决方案变得非常重要。

Unity 在 URP 12.0 及以上版本中将贴花 Decals 在 Renderer Feature 中完全模块化;并且实现了贴花投影(Decals Projector)、贴花网格以及贴花着色器(Decal Shader Graph)。

URP中的两种贴花解决方案介绍

由于 URP 涵盖平台广泛,所以 Unity 推出几种不同的解决方案:使用户可以根据平台的不同选择不同质量与性能的贴花解决方案。

第一种 Screenspace decals(屏幕空间贴花)

屏幕空间贴花通过在不透明对象之后渲染贴花作为额外的渲染通道来工作,并且根据渲染目标(如 forward/deferred)会有轻微的变化。屏幕空间贴花解决方案虽然在视觉上非常有限,但它不需要深度预通(depth prepass),这使 Screen space decals(屏幕空间贴花)解决方案非常适合基于 tile 的渲染设备(移动设备)。

其中Normal Blend属性中的选项(Low、Medium 和 High)确定 Unity 在从深度纹理重建法线向量时所采用的深度纹理的样本数。质量越高,重建的法线越准确,性能影响越大。(Low 表示 Unity 在重建法线时采用一个深度样本、Medium 表示 Unity 在重建法线时采用三个深度样本、High 表示 Unity 在重建法线时采用七个深度样本)

其中 Use GBuffer 属性 :在延迟渲染路径中使用此选项。在延迟渲染路径中,贴花影响基础颜色、自发光颜色和法线。

第二种是 DBuffer(贴花缓冲区)

贴花缓冲区 DBuffer 解决方案与 GBuffer 贴花非常相似,Unity 将贴花渲染到贴花缓冲区 (DBuffer)。然后 Unity 在渲染不透明对象期间将 DBuffer 的内容覆盖在不透明对象之上。

如下图所示:首先我们先在 depthprepass 渲染深度图,然后将贴花(Decal)渲染到类似 GBuffer 的 DBuffer 上,然后再渲染 GBuffer 的时候,直接应用同样的位置对 DBuffer 进行采样,融合到 GBuffer 中。之后根据渲染路径的不同:

前向 -在渲染不透明对象期间,每个对象将 _DBufferTexture0-3 应用于其表面数据 Surface Data。

延迟 -在渲染 GBuffer 期间,每个对象都将 _DBufferTexture0-3 应用于其表面数据 Surface Data。

当我们选择 DBuffer 这个解决方案时,会在 Technique 属性下显示 Surface Data 属性。Surface Data 属性允许我们指定贴花的哪些 Surface Data 表面属性与底层网格混合。为了更好地控制性能我们通过 Surface Data 属性来进行控制。

Surface Data 属性具有以下选项:

Albedo:贴花影响基础颜色 base color 和自发光颜色 emission color

Albedo Normal:贴花影响基础颜色、自发光颜色和法线。

Albedo Normal MAOS:贴花影响基础颜色、自发光颜色、法线、金属值、平滑度值和环境光遮挡值。

DBuffer 贴花技术需要 Depth Normal Prepass,这使得此技术在实现基于 tile 的渲染的 GPU 上效率较低。所以它不适合移动平台,比较适合 PC 和 Console 平台。(高清渲染管线 HDRP 目前在采用这种贴花方案)

如何使用URP Decal System

创建FPS游戏中的弹孔效果

那么接下来,我们就是通过一个实战的案例来教大家如何使用 URP Decal System。

首先我们新创建一个 URP 的工程,我将项目命名为 BulletDecals,然后在 Edit>Project settings 中找到 URP Asset。

接着点击 URPAsset_Renderer,在 Inspector 面板中添加 Decal Renderer Feature 到 URPAsset_Renderer 当中。

添加完成 Decal Renderer Feature 之后,将Technique 设置为 Automaic;这样的话 Unity 会自动根据所构建的平台和系统的兼容性选择最合适的 Decal 渲染技术;Max Draw Distance 设置为 100,代表 Unity 渲染贴花时距相机得到最大距离为 100,大于这个距离,Unity 将不渲染对应的贴花(如下图举例所示)。

接着我们创建一个材质,将其命名为 MetalBulletHole;然后的话为其指定 Shader Graphs/Decal 着色器。材质只有使用 Decal 着色器,URP Decal Projector 贴花投影仪才可以将材质投影为贴花,这里我们将 Decal 着色器也命名为了 MetalBulletHole;

双击 Edit..., 打开 URP 预置的 Decal Shader Graphs 模板,我们可以看到预置的 Decal Shader Graph 具有以下属性(下图中1,2,3):Base Map、Normal Map、Normal Blend 分别代表的是材质的基础纹理、法线贴图以及法线贴图与所投影到的材质得到法线贴图混合的比例。(0代表贴花不影响其投影到的材质;1代表贴花的法线贴图替换了它所投影的材质的法线贴图)

除此之外我们在贴花材质的 Inspector 面板还有一些“高级选项”。(上图中4)

Enable GPU Instancing:启用此选项可让 URP 在一个 Batch 中渲染具有相同几何体和材质的 Mesh。从而加速渲染(后面我们会开启 GPU Instancing 进行测试)。

Priority:这个属性定义 URP 在场景中绘制贴花的顺序。URP 首先绘制具有较低优先级值的贴花,然后在具有较低优先级值的贴花之上绘制具有较高优先级值的贴花。因此它不必渲染重叠区域两次,我们可以使用这个属性来减少设备上的 Overdraw。

如果场景中有多个具有相同优先级的贴花材质,URP 会按照材质的创建顺序渲染它们。

Mesh Bias Type:这个属性仅适用于具有直接指定贴花材质类型(比如我们可以将贴花着色器的材质直接分配给游戏对象)。而如果使用 Decal Projector 来指定贴花材质则可以忽略这个属性。在这种情况下 Mesh Bias 可让防止贴花游戏对象与其重叠的游戏对象之间发生 z-fighting。

View Bias:绘制贴花游戏对象时,Unity 将游戏对象的每个像素沿视图向量移动该值。正值将像素移动到更靠近相机的位置,以便 Unity 在重叠的 Mesh 顶部绘制贴花游戏对象,从而防止 z-fighting。

Depth Bias:在绘制 Decal GameObject 时,Unity 通过这个值改变 GameObject 的每个像素的深度值。负值会使像素更靠近相机,以便 Unity 在重叠的网格上绘制贴花游戏对象,从而防止 z-fighting。

为了能够控制贴图的颜色与法线强度,这里我们在内置的 Decal Shader Graph 上增加了两个节点 Multiplay 与 Normal Strength;并在 Shader Graph 中添加两个属性 Color 和 Normal Strength,这样我们就可以在编辑器的 Inspector 界面对其进行修改。

在材质的 Inputs 属性中选择添加对应的 Albedo 贴图和 Normal 贴图。选择 Color 为白色,并将 NormalStrength 的强度调节为 0.547;

创建一个空的 GameObject,将其命名为 MetalBulletHole,将URP Decal Projector组件添加到 MetalBulletHole 身上。调整大小与深度值使其显示在金属板面上,将我们之前创建的 MetalBulletHole 材质添加到 Material 属性上。当选择 Decal Projector 时,Unity 会显示其边界和投影方向。Decal Projector在边界框内的每个 Mesh 上绘制贴花材质。其中白色箭头表示投影方向。箭头的底部是坐标轴点。

最后,为了使我们的效果更加逼真,我们在 MetalBulletHole 加上子弹与金属碰撞产生的火花 Sparks 与烟尘 Dust 的粒子效果。

按照上面的方式,我们接着实现与子弹与墙面的贴花效果和子弹与木材的贴花效果;最终的效果如下:

URP Decal System性能优化

URP 支持材质的 GPU 实例化。如果场景中的贴花使用相同的材质,并且材质启用了启用 GPU Instancing 实例化属性,则 URP 会实例化材质并减少对性能的影响。

我们尝试在该项目中开启所有的贴花材质的 GPU Instancing,通过对比统计窗口的合批数和渲染线程的节省的时间都有了明显的提升。

另外由于 URP Decal System 采用了类似 ECS 的实现方法,所以在使用 URP 贴花系统的时候如果和 jobify 和 burst 一起使用效果会更好。

我们来做一个简单性能测试,我们在场景中创建了 10000 个 Decal,对比使用 Burst 前后性能的对比:通过 Profiler 中的数据我们也可以明显的看到使用 Burst 后,帧率得到了提升并且更加稳定。

透明表面贴花支持计划

最后 URP Decal System 目前还不能在透明表面上起作用。但是这个功能已经在 HDRP 中已经使用 Cluster decal 解决方案进行实现了。所以我们的计划目标是将 HDRP 贴花解决方案移植到 URP,以致于使它满足 URP 对移动设备友好性。

Unity 官方微信

第一时间了解Unity引擎动向,学习最新开发技巧

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
发现一个怪事:长大后会赚钱的孩子,小时候就有3个特征很明显

发现一个怪事:长大后会赚钱的孩子,小时候就有3个特征很明显

胡萝卜妈妈育儿说
2026-05-19 11:48:25
夫妻性生活别急着进入!学会这招“延迟满足”,爽感增倍

夫妻性生活别急着进入!学会这招“延迟满足”,爽感增倍

精彩分享快乐
2026-05-13 12:05:07
NBA含金量最高的5个总冠军,10年湖人垫底 榜首没争议

NBA含金量最高的5个总冠军,10年湖人垫底 榜首没争议

钱说体育
2026-05-25 13:17:47
极端高温下,印度人想炸开喜马拉雅山送走热浪,这可能吗?

极端高温下,印度人想炸开喜马拉雅山送走热浪,这可能吗?

有范又有料
2026-05-26 17:04:40
黄仁勋:这种做法相当不负责任,我非常反感

黄仁勋:这种做法相当不负责任,我非常反感

第一财经资讯
2026-05-26 19:30:02
兄弟们!盘点火辣娇小型岛国女星:这10位小个子,能量真不小!

兄弟们!盘点火辣娇小型岛国女星:这10位小个子,能量真不小!

碧波万览
2026-03-11 18:14:02
U17国足拿到亚少赛亚军后!足协或做出重要决定,事关浮岛敏留任

U17国足拿到亚少赛亚军后!足协或做出重要决定,事关浮岛敏留任

振刚说足球
2026-05-26 10:58:45
维埃拉:给瓜帅当助教提升了阿尔特塔,但他表现出的就是自己

维埃拉:给瓜帅当助教提升了阿尔特塔,但他表现出的就是自己

懂球帝
2026-05-27 01:25:21
上海28岁天才股神直言:A股如果迎来牛市,建议死啃涨停天眼战法

上海28岁天才股神直言:A股如果迎来牛市,建议死啃涨停天眼战法

股经纵横谈
2026-05-26 21:33:29
220万人的努力一夜归零,谁看见他们的眼泪

220万人的努力一夜归零,谁看见他们的眼泪

有态度网友ytd2993
2026-05-25 00:16:49
威尔·史密斯19年前旧作杀回Netflix前十,续集终于有动静了

威尔·史密斯19年前旧作杀回Netflix前十,续集终于有动静了

追星雷达站
2026-05-25 00:09:55
不给特朗普也不给普京,伊朗要把那些高浓缩铀,统统送到中国来?

不给特朗普也不给普京,伊朗要把那些高浓缩铀,统统送到中国来?

娱乐的宅急便
2026-05-26 19:17:37
弘一法师:永远不要去责怪你生命里的任何人,好的人给你快乐,坏的人给你经历,别人怎么对你,是过往,你怎么对别人,是修行

弘一法师:永远不要去责怪你生命里的任何人,好的人给你快乐,坏的人给你经历,别人怎么对你,是过往,你怎么对别人,是修行

每日一首古诗词
2026-05-26 12:07:58
中国农业银行佛山分行被罚180.32万元,涉多项金融业务违规

中国农业银行佛山分行被罚180.32万元,涉多项金融业务违规

蓝鲸新闻
2026-05-26 17:21:11
‘写给李爱国的一封信’全网疯传!总结就是西门庆写给武大和金莲的信:内容很炸裂

‘写给李爱国的一封信’全网疯传!总结就是西门庆写给武大和金莲的信:内容很炸裂

不二表姐
2026-05-24 22:50:05
东风奕派M8正式亮相,主打“华为乾崑六件套”大六座SUV

东风奕派M8正式亮相,主打“华为乾崑六件套”大六座SUV

财天COVER
2026-05-25 10:53:42
美股半导体深夜爆发,AMD涨超5%创新高,存储概念股集体拉升,美光科技飙涨14%,布油大涨4%

美股半导体深夜爆发,AMD涨超5%创新高,存储概念股集体拉升,美光科技飙涨14%,布油大涨4%

21世纪经济报道
2026-05-26 22:29:14
心理学:已婚女人一旦有了别的男人,一般不拒绝丈夫亲近,但会有两个表现

心理学:已婚女人一旦有了别的男人,一般不拒绝丈夫亲近,但会有两个表现

心理观察局
2026-05-26 06:15:06
鲁比奥点破印度死穴,喜马拉雅山这一挡, 再吹也成不了中国

鲁比奥点破印度死穴,喜马拉雅山这一挡, 再吹也成不了中国

叹为观止易
2026-05-26 17:32:11
深圳男子买彩票中2亿,6天后去兑奖,却被工作人员赶了出去

深圳男子买彩票中2亿,6天后去兑奖,却被工作人员赶了出去

今天说故事
2025-05-28 14:49:59
2026-05-27 02:31:00
Unity incentive-icons
Unity
Unity中国官方帐户
2473文章数 6732关注度
往期回顾 全部

艺术要闻

gmp新作:上海张江模力社区

头条要闻

武契奇获授"友谊勋章":父母特意打电话 我们都哭了

头条要闻

武契奇获授"友谊勋章":父母特意打电话 我们都哭了

体育要闻

上赛季差点降入英甲,下赛季要踢英超了

娱乐要闻

台媒贴脸!S妈被问大S嗑药当场沉默

财经要闻

中国铝行业爆单 下一个“煤炭”大周期?

科技要闻

中国AI要向外卷,而不只是做第二个OpenAI

汽车要闻

涉水加强 福特烈马亚马逊限量版上市 售价39.98万

态度原创

教育
旅游
游戏
亲子
公开课

教育要闻

不是知错了,是怕了!家长投诉老师,被老师起诉,哭着求老师谅解

旅游要闻

第二艘国产大型邮轮即将启航:解锁中国人的海上旅居新范式!

猎魂世界:千仞雪/王秋儿售后盘点!售后是越多越好还是越少越好

亲子要闻

儿科医生提醒, 平时给孩子吃药一定要看时间~

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版