虚幻5路径追踪渲染器(PT和DF的效果差别与PT速度性能)-李文磊-技术分享笔记

文章目录


前言

  • 视频链接:
    [技术专题]聊聊虚幻5路径追踪渲染器 | EpicGames 李文磊

  • 介绍:

    UE5.5版本路径追踪渲染器已经成熟,无论功能支持,稳定性和效果和效率都已经比较可靠可以用于产品的制作。今天和大家一起聊聊,内容主要讨论延迟渲染和路径追踪之间的效果差别有哪些,如何尽量统一效果,以及使用上如何对路径追踪效果及效率的提升。

  • 延迟渲染和路径追踪效果区别(左延迟,右pt):主要是眼神光细节、眉毛胡子gi、双眼皮褶皱、面部光影等提升质感的细节区别

  • 效率区别:

    比渲染速度当然是延迟渲染更快,但是延迟渲染如果结合高品质时域空间抗锯齿、再使用多层遮罩深度等,效率就极大的被影响,一旦流程复杂就会有效率瓶颈;而pt的效率可以通过合理使用来提升,比如混合pt与df、参数设置等。

  • 内容制作流程:调整df匹配pt,尽量靠近pt


PT与DF的效果差别与对齐

一、直接光

  1. 直接光面光源的高光/反射遮蔽不同,PT的更加精准
    • DF有时有大面积漏光(比如在复杂窗子外边用面光源模拟天光),如图左,因为Lumen里无法被lumenscene遮挡,并且暂时难以规避
    • 如果面光源面积大,那在df里的RTS半影会被遮挡,使面光本身显得更暗一些(不算bug,只算局限,制作上也难以避免)
  1. PT不支持面光源柔化参数:如图左给df点光源增加soft angle/radius参数,但pt不支持;但pt可以在制作上避免,比如使用矩形面光,但是增加贴图控制光源柔和程度
  2. PT有更精准的Nanite光追阴影:在DF的Nanite模式下,渲染模型和投影模型有一定差别(开启r.raytracing.nanite.mode会好一些,但离远了还是有问题),pt的阴影精度高很多;为了解决可以在df下使用vsm虚拟阴影贴图制作阴影。
  1. PT默认开启transmission效果,而df还需要在灯光中进行设置;比如树叶、皮肤、双面材质等情况
  2. PT开启灯光颜色功能设置:r.PAthTracing.LightFunctionColor 1;df开启需配置r.LightFunctionAtlas.Format 1,并重启。
  1. PT不支持直接光的Light Shaft(也叫God ray\Light beam,丁达尔光?),在df中通过后处理效果实现,参数很多是非物理来模拟的。如果要统一两边效果,建议使用体积光结合投影实现

二、 间接光

  1. DF下umen GI的间接光比PT暗一些:如果要提升Lumen的亮度,可以调节间接光强度(pt无效)、后期Diffuse Color Boost、或者把GI的mode从surface cache改为hit lighting。
  1. Lumen对动态对象的局限,动态对象不会生成surface cache,因此无法贡献gi和反射,使用hit lighting搭配屏幕空间反射可以减少差距,但动态物体离开屏幕时还是不行,不如pt的二次反射效果好。
  2. Lumen对复杂材质BSDF、BTDF的反射和gi表现不足,需要用hit lighting搭配材质中Raytracing quality Switch节点尽量接近
  1. Lumen屏幕空间效果有时保真度不足,由于ScreenTrace的反射高光有方向性,摄像机角度肯呢个看不到,这时候关闭ScreenTrace并且调高反射Bounce次数可以使效果更真实。
  1. PT中Decal有反射但不贡献GI,,Lumen里也只支持ScreenTrace。因此应该尽量避免使用自发光Decal,如果非要使用,可以用一个正常材质+ 隐藏模型和其阴影的方式来缓解,让它贡献gi(不推荐),又或者直接不用Decal做这种事。
  • Lumen对齐PT时在间接光上的设置:
    1. 项目设置使用HWRT(硬件光追),GI和反射开启hit lighting
    2. 关闭ScreenTrace的GI和反射(有时与hit lighting冲突)
    3. 反弹次数需要3
    4. Lumen Reflection Max Roughness 设置为1
    5. Diffuse Color Boost设置为1-2提高gi亮度(可选)

三、天光和天空

  • 天光有重点采样(重要性采样?)优化,因此最好使用天光而不是自发光的天空球

  • 天光设置参考

    1. 用Skylight Realtime Capture,包括Sky dome、Sky atmosphere、Fog和Cloud
    2. 使用自定义HDRI作为Skylight照明,并且关闭Affect Dynamic Indirect Lighting避免双重照明
    3. 谨慎使用Reference Atmosphere,会使很多功能失效,还需要特殊配置
    4. 材质中的is Skylight:开启后不不渲染自身、不贡献gi、可以被天光捕获;
  • DF有精度限制,如果天空有特别亮的像素时会有损失,如下图。因此在LookDev下做有方向性的光时,最好用直接光

四、雾,体积雾,体积光

  1. PT雾需要使用体积雾,精度高,并且雾效会受光源radius影响(右图),df下取决于tex精度,并且使用时序历史帧的数据因此会有抖动的情况(左图)。

  2. Exponential fog(高度雾)的Falloff的参数不物理,因此pt和df很难效果统一。如果体积雾距离数值大能相对接近一些。

  3. Lumen对体积光反射有局限,默认不反射雾气,设置r.Lumen.SampleFog 可以有一点点效果,但与pt差别大

  4. PT中带颜色贴图的面光源会影响和体现到体积雾上,但df不会(上图)。如果设置r.VolumetricFog.RectLightTexture 为1,则df可以有一定程度的颜色影响,但效果与pt不一样;如果再设置r.VolumetricFog.InjectRaytracedLights 1,两边效果会相对一致。(下图)

  5. PT的Fog不支持lighting channel,所有channel总是工作;而df中也只支持channel 0。

  6. 如果使用Reference Atmosphere,pt的Volumetric Fog也可以支持;但不支持新功能LocalFogVolume(用来在某些无法使用体积雾的设备上产生局部雾的功能)

五、材质

  1. 头发着色模型:主要区别是对散射的支持,df下不支持真实散射功能,(散射让头发更加通透自然,在只有间接光情况下差别明显);

  2. 头发:在Groom下,df支持的input有BaseColor\Specular\Roughness\Tangent\Backlit,而PT不支持其中的Tangent和Backlit;在Card头发下,df支持的input有BaseColor\Scatter\Specular\Roughness\Tangent,PT不支持Tangent

  3. PT默认支持皮肤Transimission,效果比较好;df需要单独在灯光设置中开启,但效果相差明显(右边PT),甚至不好看,所以有时还会专门关掉此功能

  4. PT不支持Volumetric Fog 材质(在开发计划中)

  5. PT可以自动计算半透折射(需要开启Refraction)、厚度(有厚度用Asorption Medium-吸收介质 节点来染色;没有厚度用Thin Translucent)、焦散,(设置r.PathTracing.ApproximateCaustics 0质量更高)等效果。DF有很大差别,可以对比文档查看。

  6. PT尚不支持Pixel Depth Offset。所以尽量使用Nanite高精度模型,来适应两个模型穿插时需要的丰富细节;并且因此PT也只能用Groom

  7. PT中WPO(世界位置偏移,vs里实现)默认不起效,需要开启Enable WPO in Raytracing(PT);并且材质动画在pt里会有残影的情况,需要关掉r.Test.OverrideTimeMaterialExpressions停掉材质动画效果,避免运动模糊

  8. Lumen在硬件光追中不支持材质使用DDX、DDY节点,因此会在Hitlighting中的LumenScene中有异常,如上图左。比如上图图左材质使用了HeightToNormalSmooth节点,里边用到了DDX和DDY,效果就有问题,如果替换成RayTracingQualitySwitchReplace节点,效果就会好些,变成下图图左。

  9. 目前PT还不支持Nanite Tessellation

六、粒子

  • Niagara Fluids在PT下精度不够高,会有马赛克问题,这是因为r.HeterogeneousVolumes.FrustumGrid.ShadingRate 默认是4(控制多少像素做一个shading),调成2就好了。另外两个相关参数是r.HeterogeneousVolumes.FrustumGrid.MaxBottomLevelMemoryInMegabytes 512,和r.PathTracing.MaxRaymarchSteps 1024.

七、Denoise 降噪

  • 视口降噪方式切换参数r.PathTracing.SpatialDenoiser.Type,其中0是使用openImage的Denoise,表现柔和、降噪力度强大、但会失去一些细节(上图右);1是NVIDIA的optiXDenoise,细节保留比较多(上图左)

八、后期

  1. PT中需要关闭自动曝光,因为自动曝光在输出的时候需要预热时间使曝光正确,PT下渲染慢会有问题
  2. PT中没有TSR,df中因为开启了TSR(时序超分)画面会比PT模糊一点
  3. motion blur:建议PT使用Reference Motion Blur,这样就不用后期制作MB效果了(但参数Shutter Angle等还是去后期的MB面板上设置)。TemporalAA的数值决定光滑度。
  4. PT里的后期无法采样SceneTextures,它有自己一套采样的buffer

九、其他

  1. PT中想渲染长条模型的话,需要开启r.PathTracing.Geometry.SplineMeshes 1,其他各种各样的模型设置是否能在PT中渲染也是类似
  2. PT中不支持世界分区的HLOD,因此不会渲染,也不会反应在其他反射中。(影视渲染要避免使用HLOD)

对PT速度的影响因素

  • PT基本工作原理:Importance sampling、反弹次数、Sample数量、逃逸

    Path Tracing是Raytracing的一种,但使用了一些优化采样算法,可以使用更少的射线产生比较好的效果。基本原理是从摄像机发射射线,反向对每个像素进行信息追踪,射线经过一定次数反弹直到追到光源或者逃逸。最后用收集到的信息进行着色。每个像素有多次射线(SPP),路径有一定随机性(根据材质属性和灯光信息会对方向有指向),着色使用结果的平均值。

  • MRO输出的Reference Motion Blur必须开,会快很多

  • 像素数量包含分辨率和分层的像素(局部PT),renderLayer数量也影响性能

  • 光线无法逃逸的环境就慢,比如封闭室内,可以用最大反弹次数限制

  • 植被是否Nanite、面数多少、是否WPO对速度影响不大,可以忽略

  • Volumetric Fog的浓度越大和可视距离越远 速度越慢,----体积雾可以控制在一定区域内(区域光源的区域雾效)

  • Reference Atmosphere和Reference Cloud速度会慢

  • 材质影响:

    1. 材质BaseColor越亮就越慢(尽量不要接近1),因为反弹终结需要用到蒙特卡洛方法,但基础色太亮终止的机会就越小。---可以通过降低最大反弹次数缓解,或者材质里单独设置"贡献PT的Albedo"低一点,不贡献的可以高一点
    2. 反射粗糙度越低就越慢(其实就是越反弹越难终止越慢)
    3. 复杂材质慢。比如SSS皮肤、散射的毛发、植被-双面foliage的Subsurface、半透- Color的Transmission
  • 灯光影响:

    1. 灯光数量对速度影响不大
    2. 但灯光面积Radius(光源面积)和照明半径越大速度越慢
  • Tips:可以使用后处理Volume里的Lighting Component的Toggle 设置来Profile到影响速度的主要因素

比较分层PT和全部DF的速度差别

  1. Slay(室外) 4K,64Sample 分两层:全DF 20s;背景DF人物PT 22s;全PT 29s
    这个室外场景方便光线逃逸,并且光源主要是直接光,可以看到局部pt增加的时间并不多;全部pt多9s主要是像素多和体积雾pt不友好等原因
  1. ArchViz(室内) 4K,64Sample 分两层:全DF 21s;背景DF人物PT 31s;全PT 34s
    这个室内照明使用pt就会变慢很多,这是因为角色照明主要来自环境GI或者反弹光,即使分层计算也很复杂
相关推荐
清木!1 分钟前
数据仓库详解
笔记
大筒木老辈子5 小时前
Linux笔记---协议定制与序列化/反序列化
网络·笔记
草莓熊Lotso5 小时前
【C++】递归与迭代:两种编程范式的对比与实践
c语言·开发语言·c++·经验分享·笔记·其他
我爱挣钱我也要早睡!8 小时前
Java 复习笔记
java·开发语言·笔记
汇能感知13 小时前
摄像头模块在运动相机中的特殊应用
经验分享·笔记·科技
阿巴Jun13 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
茯苓gao14 小时前
STM32G4 速度环开环,电流环闭环 IF模式建模
笔记·stm32·单片机·嵌入式硬件·学习
是誰萆微了承諾14 小时前
【golang学习笔记 gin 】1.2 redis 的使用
笔记·学习·golang
DKPT14 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
ST.J15 小时前
前端笔记2025
前端·javascript·css·vue.js·笔记