拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Unity URP、HDRP与UE4全局光照方案对比:PBR渲染的最后一公里

Unity URP、HDRP与UE4全局光照方案对比:PBR渲染的最后一公里

1. 全局光照为什么是PBR渲染的"最后一公里"

很多人做PBR材质对比的时候,注意力全放在金属度、粗糙度、法线贴图这些表面参数上,觉得只要材质调对了,效果就到位了。但实际项目里你会发现一个很尴尬的现象:同一个材质球,放在Unity URP里看着还行,搬到HDRP里突然变得"塑料感"很重,再丢进UE4里又完全是另一种味道。问题往往不在材质本身,而在全局光照(Global Illumination,简称GI)这一层。

全局光照解决的核心问题是:光线打到物体表面之后,反弹出去的光还会继续照亮其他物体。没有GI,场景里只有直接光照,阴影区域就是死黑一片,物体之间没有颜色渗透,整个画面会显得"干"和"假"。PBR之所以能呈现出接近真实的质感,很大程度上依赖GI提供的间接光信息——金属反射的环境、墙面之间的颜色溢出、角落里的柔和暗部,这些都是GI在背后撑着。

这篇内容主要面向已经接触过Unity URP、HDRP和UE4三套管线,但对它们在GI实现上的差异还比较模糊的开发者。我会从各自的GI方案原理讲起,结合实机对比和参数配置,把"为什么同一个场景在三套管线里表现不同"这件事说清楚。如果你正在做跨引擎的效果对齐,或者纠结项目该选哪套管线,这些内容应该能帮你少走一些弯路。

需要提前说明的是,GI这个话题非常大,我这里聚焦在实时和烘焙两条路线的工程实践层面,不展开太多图形学公式推导,重点放在"怎么配、为什么这么配、配完什么效果"上。

2. 三套管线的GI方案底层逻辑差异

2.1 Unity URP:轻量化的妥协与实时GI的取舍

URP的定位是移动端和中低端设备,所以它的GI方案从一开始就是"能省则省"。URP支持烘焙光照贴图(Baked Lightmap)和光照探针(Light Probes),但它不支持Enlighten实时全局光照,这一点和内置管线有本质区别。内置管线里那套Enlighten实时GI,在URP里是被砍掉的。

那URP怎么做动态物体的间接光?答案是光照探针组(Light Probe Group)加环境光(Ambient)。静态物体靠烘焙,动态物体靠探针插值。这个方案的问题在于,探针只能捕捉低频的间接光信息,高频的细节(比如靠近彩色墙面的物体应该染上墙面颜色)基本丢失。你在URP里放一个白色球体靠近红色墙壁,球体侧面几乎不会有明显的红色反弹光,除非你手动在探针里刷数据。

URP的另一个特点是**Screen Space Ambient Occlusion(SSAO)和Screen Space Global Illumination(SSGI)**的支持情况。SSAO在URP里是有的,但SSGI在早期URP版本里根本没有,后来才通过Renderer Feature的方式补上,而且效果和性能都只能算"能用"。SSGI本质上是屏幕空间的后处理,只能处理屏幕内可见的间接光,屏幕外的东西一概不管,所以转身的时候经常能看到光照"跳变"。

从工程角度讲,URP的GI策略就是:静态靠烘焙,动态靠探针,实时靠后处理凑。这套组合在移动端够用,但如果你要做主机级画质,就会明显感觉到天花板。

2.2 Unity HDRP:为高保真而生的多层GI体系

HDRP的GI方案比URP复杂得多,它同时支持烘焙GI、实时GI(通过Enlighten的替代方案)以及屏幕空间GI,而且这几套可以叠加使用。HDRP里最核心的GI组件是Volume框架下的Lighting设置,你可以在这里控制环境光、雾效、以及GI的强度。

HDRP的烘焙GI走的是Progressive Lightmapper(渐进式光照贴图烘焙器),这个烘焙器在URP里也有,但HDRP里的配置项更细,支持GPU烘焙,速度比CPU烘焙快很多。HDRP还支持Lightmap Resolution的逐物体覆盖,这意味着你可以给重要的物体单独提高烘焙精度,而不是全局拉高分辨率导致烘焙时间爆炸。

实时GI方面,HDRP早期依赖Enlighten,后来Unity推了Ray Tracing GI(需要DXR支持的显卡)。光追GI的效果确实好,间接光的反弹次数和精度都远超屏幕空间方案,但代价是性能。我在一张RTX 3060上测试,1080p分辨率下开启光追GI,帧率大概掉30%到40%,而且显存占用明显上升。

HDRP还有一个URP没有的东西:Screen Space Reflection(SSR)和Ray Traced Reflection的GI联动。反射本身不是GI,但反射捕捉到的环境信息会反过来影响间接光的计算,所以HDRP里的金属材质看起来比URP"活"很多,因为反射和GI是打通的。

2.3 UE4:Lumen之前的传统GI与Lumen的革命

UE4在Lumen出现之前,GI方案主要是Lightmass烘焙加Distance Field Ambient Occlusion(DFAO)。Lightmass是UE4的静态光照烘焙器,质量很高,支持间接光反弹次数、环境光遮蔽、光照贴图分辨率等参数。DFAO则是用距离场来计算动态物体的环境光遮蔽,效果比屏幕空间AO更稳定,因为它不依赖屏幕内容。

但真正让UE4在GI上拉开差距的是Lumen。Lumen是UE5引入的,但在UE4后期版本里也有实验性支持。Lumen的核心是软件光追加硬件光追双路径:软件路径用Signed Distance Field(SDF)和屏幕空间追踪来算间接光,硬件路径直接用GPU的RT Core。Lumen的最大特点是全动态——不需要烘焙,场景里的物体可以随意移动,GI会实时更新。

我在UE4里对比过Lightmass和Lumen的同一个场景。Lightmass烘焙出来的间接光非常干净,没有噪点,但它是静态的,物体一动GI就不对了。Lumen的间接光有轻微噪点(可以通过Temporal Accumulation降噪),但动态效果无敌,而且颜色渗透比Lightmass更明显。代价是性能:Lumen在1080p下大概吃掉30%到50%的GPU性能,具体取决于场景复杂度。

三套管线的GI方案对比可以总结成下面这张表:

管线静态GI方案动态GI方案实时GI方案典型性能开销
Unity URP烘焙LightmapLight ProbeSSGI(后处理)低
Unity HDRPProgressive LightmapperLight Probe + SSRRay Tracing GI中到高
UE4LightmassDFAOLumen中到高

这张表的关键信息是:URP的GI是"够用就好",HDRP是"分层可选",UE4是"全动态优先"。理解这个定位差异,后面调参数的时候就不会迷茫。

3. 烘焙GI的实操对比:从参数到成品

3.1 Unity烘焙流程中的关键参数与踩坑点

Unity的烘焙GI,不管是URP还是HDRP,底层都是Progressive Lightmapper。这个烘焙器的工作方式是:先算直接光照,再算间接光照,间接光照的反弹次数由Lightmap Parameters里的Bounces控制。默认是2次反弹,意思是光线打到物体后反弹两次。反弹次数越多,间接光越丰富,但烘焙时间呈指数增长。

我在一个室内场景里测试过:Bounces设为1时,烘焙时间约2分钟;设为2时,约5分钟;设为4时,直接飙到20分钟以上。所以Bounces不是越多越好,一般室内场景2到3次就够了,室外场景1到2次足够,因为室外有天空光补充。

另一个关键参数是Lightmap Resolution,单位是texel per unit。这个值决定了光照贴图的精度。设得太低,阴影边缘会有锯齿;设得太高,烘焙时间和显存占用都会爆炸。我的经验值是:室内墙面用10到20,地面用20到40,小物件用40到60。但更好的做法是用Lightmap Parameters资产,给不同物体分配不同的参数,而不是全局调一个值。

还有一个容易踩的坑是UV2。Unity烘焙GI需要模型有第二套UV(UV2),专门用于光照贴图。很多从外部导入的模型只有一套UV,直接烘焙会报错或者效果错乱。解决办法是在建模软件里展UV2,或者在Unity里用Generate Lightmap UVs选项自动生成。但自动生成的UV2质量参差不齐,接缝处容易有光照泄漏,重要模型还是手动展比较好。

提示:Unity 2021之后的版本里,Progressive Lightmapper支持GPU烘焙,但需要显卡支持OpenCL。如果你的显卡不支持,烘焙会回退到CPU,速度慢很多。可以在Preferences里查看GPU烘焙是否可用。

3.2 UE4 Lightmass的配置逻辑与质量把控

UE4的Lightmass烘焙和Unity的思路类似,但参数命名和侧重点不同。UE4里控制烘焙质量的核心是Lightmass Settings,可以在World Settings里找到。关键参数包括Static Lighting Level Scale、Num Indirect Lighting Bounces、Indirect Lighting Quality和Indirect Lighting Smoothness。

Static Lighting Level Scale这个参数很关键,它决定了光照贴图的分辨率基准。值越小,分辨率越高,烘焙越慢。默认是1,我一般会调到0.5到0.8之间来提升精度。但注意,这个值是全局的,调小之后整个场景的烘焙时间都会增加,所以大场景要谨慎。

Num Indirect Lighting Bounces就是反弹次数,UE4默认是1,我建议室内场景调到3到5,室外2到3。UE4的间接光计算比Unity更"重",因为它的Lightmass会考虑更多的光线采样,所以同样反弹次数下,UE4的烘焙时间通常比Unity长。

Indirect Lighting Quality控制的是间接光的采样质量,默认是1,调到2到4可以显著减少噪点,但烘焙时间也会成倍增加。Indirect Lighting Smoothness则是用来平滑间接光的,值越高越平滑,但过高会丢失细节。我一般设在0.75到0.9之间。

UE4烘焙还有一个Unity没有的功能:Lightmass Portal。这是一个放置在窗口或门口的体积,用来引导光线进入室内。没有Portal的时候,室内烘焙经常会出现"光线进不来"的情况,加了Portal之后,窗口附近的光照会明显更自然。这个功能在Unity里没有直接对应,只能靠手动补光或者调环境光来模拟。

3.3 烘焙结果在三套管线中的视觉差异

同一个场景,同样的材质,在三套管线里烘焙出来的GI效果差异其实挺明显的。我拿一个简单的室内场景做了对比:白色墙面、木地板、一个红色沙发、一扇窗户。

在Unity URP里,烘焙出来的间接光比较"平",墙面之间的颜色渗透很弱,红色沙发对周围地面的颜色影响几乎看不出来。窗户进来的光在墙面上的衰减比较生硬,暗部细节偏少。整体感觉是"能看,但不够真实"。

在Unity HDRP里,同样的烘焙参数下,间接光明显更丰富。红色沙发在地面上有一层淡淡的红色反弹,窗户光的衰减更柔和,暗部有更多层次。HDRP的Volume系统里可以额外调整Indirect Lighting Intensity,我一般会调到1.2到1.5之间,让间接光更明显。

在UE4里,Lightmass烘焙出来的效果是三者中最"厚"的。间接光的颜色渗透非常自然,窗户光的衰减曲线接近物理正确,暗部细节保留得最好。但UE4的烘焙时间也是最长的,同样场景,Unity URP烘了5分钟,HDRP烘了8分钟,UE4烘了15分钟以上。

这个差异的根源在于三套管线的光照贴图编码方式和间接光计算精度不同。Unity的Lightmapper在计算间接光时,采样数相对保守,而UE4的Lightmass会做更多的光线追踪采样。HDRP介于两者之间,但它的Volume系统给了更多后期调整空间。

4. 实时GI的工程落地:Lumen与光追GI的实战

4.1 Lumen在UE4项目中的启用条件与性能调优

Lumen在UE4里是实验性功能,需要在Project Settings里开启。具体路径是:Project Settings → Rendering → Global Illumination → 把Dynamic Global Illumination Method设为Lumen。同时还要开启Generate Mesh Distance Fields,因为Lumen的软件光追依赖距离场。

开启Lumen之后,场景里的间接光会实时更新,物体移动时GI跟着变。但有几个坑要注意:

第一,Lumen对材质的要求比较高。如果材质里用了Custom Node或者复杂的Shader,Lumen可能无法正确计算间接光。我遇到过用Custom Node做溶解效果的材质,在Lumen下间接光直接变成黑色,后来把Custom Node换成标准节点才正常。

第二,Lumen的噪点问题。软件光追路径下,间接光会有明显的噪点,尤其是在暗部。解决办法是调高Lumen Final Gather Quality,或者开启Temporal Accumulation。但Temporal Accumulation会导致快速移动时出现拖影,需要权衡。

第三,性能开销。Lumen在1080p下大概吃掉30%到50%的GPU性能,具体取决于场景的三角形数量和距离场复杂度。我在一个中等复杂度的场景里测试,不开Lumen是120帧,开了Lumen掉到70帧左右。如果目标是60帧,那Lumen基本吃掉了所有余量。

调优方面,Lumen Scene Lighting Quality和Lumen Final Gather Quality是两个关键参数。前者控制场景光照的更新频率,后者控制最终聚集的质量。我一般会把Scene Lighting Quality设为1,Final Gather Quality设为2,这样在画质和性能之间比较平衡。

4.2 HDRP光追GI的硬件门槛与效果边界

HDRP的光追GI需要DXR(DirectX Raytracing)支持,也就是NVIDIA RTX系列或AMD RX 6000系列以上的显卡。开启方式是在HDRP的Volume里添加Ray Tracing Settings,然后启用Ray Traced Global Illumination。

光追GI的效果确实比屏幕空间方案好很多。屏幕空间GI只能处理屏幕内可见的间接光,转身的时候光照会"跳",而光追GI是全场景的,不存在这个问题。我在一个走廊场景里对比过:屏幕空间GI在走廊尽头有明显的暗区,因为屏幕外的东西算不进去;光追GI则没有这个问题,走廊尽头的间接光很自然。

但光追GI的性能代价也很大。我在RTX 3060上测试,1080p分辨率下,不开光追是90帧,开了光追GI掉到55帧左右。如果同时开光追反射和光追阴影,帧率会进一步掉到40帧以下。所以光追GI目前更适合高端PC或者主机,移动端和中低端PC基本不用考虑。

还有一个容易被忽略的点:光追GI的降噪。光追GI的原始输出噪点很多,需要配合Denoiser使用。HDRP里可以开启Ray Tracing Denoising,但降噪会引入一定的延迟和模糊。我一般会把降噪强度设在中等,太高了画面会"糊"。

4.3 URP的SSGI:能用但别指望太多

URP的SSGI是通过Renderer Feature实现的,需要在URP Renderer里添加Screen Space Global Illumination。开启之后,屏幕空间内会有间接光效果,但效果比较有限。

SSGI的核心问题是它只能处理屏幕内可见的间接光。这意味着如果间接光的来源在屏幕外,SSGI就完全捕捉不到。比如你面对一堵墙,墙后面的红色物体对墙的间接光影响,SSGI是算不出来的。所以SSGI在封闭空间里效果还行,在开放场景里就很容易穿帮。

另外,SSGI的性能开销也不低。虽然比光追GI轻,但在移动端还是太重。我在一台中端安卓机上测试,开启SSGI后帧率从60掉到35左右,而且发热明显。所以URP的SSGI更适合PC端的轻量级项目,移动端建议还是老老实实用烘焙加探针。

如果你非要在URP里用SSGI,我的建议是:只在大场景的远景使用,近景用烘焙GI覆盖。这样既能保证近处的画质,又能让远处有动态GI的感觉。但说实话,这个方案的工程复杂度不低,收益也有限,不如直接上HDRP。

5. 跨管线GI效果对齐的实操思路

5.1 环境光与间接光强度的统一基准

跨管线对齐GI,第一步是统一环境光。三套管线的环境光来源不同:Unity的Environment Lighting可以来自Skybox、Gradient或Color,UE4的Sky Light则更复杂,支持Cubemap和实时捕捉。

我的做法是:先用一个纯色环境光作为基准,把三套管线的环境光颜色和强度调到一致。具体操作是,在Unity里把Environment Lighting的Source设为Color,给一个中性灰;在UE4里把Sky Light的Intensity调到对应值。然后放一个标准球体,对比三套管线里的环境光反射是否一致。

环境光对齐之后,再调间接光强度。Unity HDRP的Volume里有Indirect Lighting Intensity,UE4的Lightmass里有Indirect Lighting Quality和Indirect Lighting Smoothness。这些参数没有直接对应关系,只能靠肉眼对比来调。我一般会先让UE4的间接光看起来"正常",然后调Unity的参数去逼近。

这里有个经验:Unity的间接光默认偏弱,UE4的默认偏强。所以从UE4搬到Unity的时候,通常需要把间接光强度调高20%到30%;反过来则要调低。

5.2 光照贴图编码与色彩空间的一致性

跨管线GI对齐的另一个大坑是光照贴图的编码方式和色彩空间。Unity默认使用Linear Color Space,UE4也是Linear,但两者的光照贴图编码格式不同。Unity的Lightmap是RGBM或RGBM Encoded,UE4的是RGBE或LogLuv。这些编码方式在解码时会有细微差异,导致同样的光照贴图在两套引擎里看起来亮度不同。

解决办法是:在烘焙之前统一色彩空间设置。Unity里确认Player Settings的Color Space是Linear,UE4里确认Project Settings的Rendering是Linear。然后烘焙的时候,尽量用相同的曝光值和Gamma设置。Unity的Lighting设置里有Ambient Intensity和Reflection Intensity,UE4的Lightmass里有Environment Color和Environment Intensity,这些都要对齐。

还有一个细节是光照贴图的采样过滤。Unity默认用Bilinear过滤,UE4默认也是Bilinear,但UE4多了一个Lightmap Filtering选项,可以选Bilinear或Bicubic。Bicubic更平滑但更慢,我一般用Bilinear就够了。

5.3 动态物体GI的探针与距离场方案对比

动态物体的GI,三套管线的方案差异很大。Unity用Light Probe Group,UE4用DFAO加Lumen,HDRP则可以用Light Probe加Ray Tracing GI。

Light Probe的优点是轻量,缺点是精度低。探针是空间中的离散采样点,动态物体在探针之间移动时,间接光是插值出来的,所以精度取决于探针的密度。我一般会在动态物体活动频繁的区域加密探针,比如角色经常走动的走廊,探针间距设在1到2米;不常去的地方可以稀疏一些,3到5米一个。

UE4的DFAO则是用Distance Field来计算环境光遮蔽,不依赖探针。DFAO的优点是动态物体也能有比较准确的AO,缺点是它只算AO,不算颜色渗透。所以UE4里动态物体的间接光颜色,还是要靠Lumen或者手动补光。

HDRP的光追GI对动态物体支持最好,因为它是全场景光追,动态物体的间接光会实时更新。但前提是硬件支持DXR,而且性能开销大。

实际项目里,我的建议是:如果动态物体不多,用Light Probe加烘焙GI就够了;如果动态物体多且画质要求高,上Lumen或光追GI;如果是在移动端,老老实实用烘焙加探针,别想太多。

6. 项目选型:什么场景该用哪套GI方案

6.1 移动端与PC端的GI方案分水岭

移动端的GI方案基本只有一条路:烘焙Lightmap加Light Probe。URP的SSGI在移动端太重,HDRP的光追GI移动端根本不支持,UE4的Lumen在移动端也是实验性的。所以移动端项目,GI的重点是烘焙质量和探针布局,而不是实时GI。

PC端的选择就多了。如果是中低端PC,URP加烘焙GI是稳妥选择,SSGI可以开但别指望太多。如果是高端PC,HDRP加光追GI或者UE4加Lumen都能出很好的效果,但要注意性能预算。如果是主机,UE4的Lumen和HDRP的光追GI都是可行的,具体看目标帧率和分辨率。

这里有个经验数据:1080p 60帧的目标下,光追GI和Lumen大概能用在中高复杂度场景;如果目标是4K 60帧,那光追GI基本不用考虑,除非是RTX 4080以上的显卡。

6.2 静态场景与动态场景的GI策略选择

静态场景的GI策略很简单:烘焙。烘焙的GI质量最高,性能开销最低,因为运行时不需要计算间接光。静态场景的烘焙可以放心把Bounces调到3到5,Resolution调高,反正只烘一次。

动态场景就麻烦了。如果场景里大部分物体是动态的,烘焙GI基本没用,因为物体一动光照就不对了。这时候只能上实时GI:Lumen、光追GI或者SSGI。但实时GI的性能开销大,所以动态场景通常需要降低其他方面的画质来平衡,比如降低阴影质量、减少后处理效果。

混合场景(部分静态部分动态)是最常见的。我的做法是:静态物体烘焙GI,动态物体用探针或实时GI。但要注意,静态和动态物体的GI要尽量匹配,否则动态物体在静态GI环境里会显得"格格不入"。匹配的方法是:烘焙的时候把动态物体也放进去,让它们参与间接光计算,但烘焙完成后把动态物体的烘焙数据去掉,只保留它们对静态物体的影响。

6.3 画质与性能的平衡点怎么找

GI的画质和性能平衡,核心是找到那个"看起来够好"的最低配置。我的方法是:先开最高画质,然后逐项降低参数,直到肉眼能看出明显画质下降为止,然后回退一档。

具体到GI参数:Bounces从4降到2,画质下降通常不明显,但烘焙时间减半;Lightmap Resolution从40降到20,阴影边缘会变糊,但如果不凑近看也还好;SSGI的强度从1降到0.5,间接光会变弱,但配合环境光补偿也能接受。

实时GI方面,Lumen的Final Gather Quality从4降到2,噪点会增加但帧率能提升20%左右;光追GI的反弹次数从3降到1,间接光会变"薄"但性能提升明显。这些取舍没有标准答案,取决于你的项目对画质和帧率的优先级。

我个人在实际项目里的体会是:GI的画质提升在初期很明显,但到了某个点之后,投入产出比会急剧下降。比如Bounces从1到2,画质提升很大;从2到4,画质提升就很小了,但烘焙时间翻倍。所以找到那个"拐点"很重要,别盲目堆参数。

7. 那些文档里不会写的GI踩坑记录

7.1 光照泄漏与接缝问题的排查链路

光照泄漏是烘焙GI最常见的问题,表现是光线"穿"过墙壁,在隔壁房间的地面上出现不该有的亮斑。这个问题的根源通常是UV2的接缝或者光照贴图分辨率不足。

排查链路是这样的:先看泄漏的位置是不是在UV接缝附近,如果是,那基本就是UV2的问题。解决办法是重新展UV2,或者在Unity里调高Lightmap Padding,让接缝处的texel有更多余量。如果不是接缝问题,那就看光照贴图分辨率是不是太低,调高分辨率再烘一次试试。

UE4里还有一个特有的泄漏问题:Lightmass Portal没放对。Portal的位置和大小会影响光线的进入路径,如果Portal太大或者位置偏了,光线会从奇怪的角度进入室内,造成泄漏。解决办法是调整Portal的位置和大小,让它紧贴窗口或门口。

7.2 动态物体GI不匹配的典型表现与修复

动态物体GI不匹配的典型表现是:角色走到某个区域,身上的光照突然变亮或变暗,或者颜色突然偏了。这个问题通常是Light Probe的插值出了问题。

Light Probe的插值是基于Delaunay三角剖分的,如果探针布局不合理,比如有探针被放在了几何体内部,插值就会出错。解决办法是检查探针位置,确保没有探针在墙壁或地板里面。另外,探针的密度也要均匀,不要一个区域特别密另一个区域特别疏,否则插值会不连续。

UE4里动态物体GI不匹配的表现通常是DFAO的AO过强或过弱。DFAO的强度可以在Lightmass Settings里调,但更根本的解决办法是调整Distance Field Resolution。距离场分辨率太低,AO就会不准确;太高则显存占用大。我一般会把重要物体的距离场分辨率调高,次要物体调低。

7.3 烘焙时间失控的常见原因与加速手段

烘焙时间失控是另一个让人头疼的问题。常见原因有几个:Bounces太高、Lightmap Resolution太高、场景三角形太多、GPU烘焙没开启。

加速手段方面,最有效的是开启GPU烘焙。Unity的Progressive Lightmapper支持GPU烘焙,速度比CPU快3到5倍。UE4的Lightmass也支持GPU烘焙,但需要开启Use GPU Lightmass选项。不过GPU烘焙对显卡有要求,而且有些材质和光照类型不支持,需要提前测试。

另一个加速手段是分块烘焙。大场景不要一次性烘,而是分成几个区域,逐个烘焙。Unity里可以用Lightmap Parameters给不同区域设置不同的参数,UE4里可以用Lightmass Importance Volume来限定烘焙范围。这样既能控制烘焙时间,又能针对不同区域调整质量。

还有一个技巧是降低烘焙时的光线采样数。Unity的Lightmapper有Direct Samples和Indirect Samples,UE4的Lightmass有Num Indirect Lighting Bounces和Indirect Lighting Quality。这些参数调低可以显著加快烘焙,但画质会下降。我的做法是:先低质量烘一版看整体效果,确认没问题后再高质量烘最终版。这样避免高质量烘了半天发现布局有问题又要重来。

8. 从GI差异反推PBR材质调优的实战建议

GI和PBR材质是互相影响的。同样的材质,在不同的GI环境下表现完全不同。所以调PBR材质的时候,不能只看材质球本身,还要考虑它所在的GI环境。

在URP里,因为GI比较弱,材质需要适当提高环境光反射的强度来补偿。具体做法是调高Smoothness或者Metallic,让材质更多地反射环境光。但注意别调过头,否则会显得"油腻"。

在HDRP里,GI比较丰富,材质可以保持物理正确的参数,不需要额外补偿。HDRP的Volume系统里可以调Indirect Lighting Intensity,如果觉得间接光太强,可以适当调低。

在UE4里,Lumen的GI非常动态,材质需要注意间接光的颜色渗透。比如一个白色物体放在红色旁边,Lumen会让白色物体染上红色,这时候材质的Base Color就要考虑这个因素,别调得太纯。

还有一个跨管线的通用建议:GI环境确定之后,再调材质。很多人习惯先调材质再搭GI,结果GI一换材质全废。正确的流程是:先搭好GI环境(烘焙或实时),然后在最终GI环境下调材质。这样调出来的材质才是"在这个GI环境下正确"的。

最后分享一个小技巧:用标准球体和标准材质做跨管线对比。在场景里放一组标准球体(金属度0、粗糙度0.5、Base Color中性灰),然后在三套管线里分别截图对比。如果标准球体的表现一致,那GI环境基本对齐了;如果不一致,就调GI参数直到一致。这个方法比凭感觉调要靠谱得多。

返回列表