18 KiB
有待改进的地方
- 角色卡通渲染:建议之后自研卡通渲染引擎。
- DMX Light Beam性能问题。
- 因为成片后续会进行重新渲染,建议编写一个插件 记录UE各种事件(录像功能)+记录摄像机轨迹,方便后期进行操作。
优化记录
DMX
渲染模型&材质:
- SM_Strobe_Lens M_MI_Lens_Strobe:不透明材质,指令数254
- SM_Beam_RM M_Beam_Master:
- BP_StaticMatrix M_MatrixBeam_Master
Beam材质
变量:
- NSlice:NearPlane 交点世界坐标
- NDepth:
- FSlice:FarPlane 交点世界坐标
- FDepth:
MF_WSIntersection:如果没有相交,RelIntersectPos为,IntersectDistance为。
优化方案
- DMX模型改成StaticMeshInstance,Gun的模型是Masked,建议改成不透明。
- 关闭DMX灯光中的照明效果,因为不会对着模型照明。
- 场景中的组件勾选Disable Lights
- StaticMeshLens 组件可以按照距离进行关闭。(BP_StaticStrobe_C、BP_MovingHead_C)
- 场景中的组件中的StaticMeshLens去掉Visible。
- Sequence中手动设置Visible。
- Beam材质
- 给BeamRayMarch的DMX Max Light Distance 乘上一个变量倍率,之后适当减少DMX Max Light Distance大小,建议的倍率为1.2
1.5,长度为1/1.21/1.5; 给BeamRayMarch的DMX Zoom 乘上一个变量倍率,Zoom 5=>4.5~3,并且将倍率调整成合适数值。 - 调整Zoom Quilty 1=>1.5~2,并且适当调整DMX Lens Radius的数值,减少断点问题。
- 给BeamRayMarch的DMX Max Light Distance 乘上一个变量倍率,之后适当减少DMX Max Light Distance大小,建议的倍率为1.2
优化目标
XR 2k 2048*1080 50帧 => 3440 * 1440 50帧0
优化场景
E:\Project\yanjingdan\BengHuai\Ture\Content\UnWorld\BengHuai_True\Maps E:\Project\yanjingdan\BengHuai\L_Dacapo\content\UnWorld\BengHuai_Dacapo\Maps\L_Dacapo5.umap E:\Project\yanjingdan\BengHuai\BengHuai\Content\UnWorld\BengHuai_Tiantai\Maps\L_BengHuai_Tiantai.umap
步骤:
- 场景静态模型设置成Nanite,以下模型需要额外考虑是否开启Nanite:
- 带有世界位移与Masked的模型,比如花 草 模型。
- 将一些不会动的模型都设置成Static。
- 告知拍摄镜头需求,是全景还是需要360°都有拍摄要求。
- 确定场景之后不会进行改动之后,使用MergeActor将模型中的相同材质进行合并,将场景中的静态模型设置成Instance。
L_BengHuai_Tiantai
问题:
1. 模型问题
1. 目前比较大的问题在于模型较多、面数较高且场景静态模型没有设置成Nanite。使得剔除与BasePass渲染延迟过高。
Model
1. 场景中大量巨大无异议的球,名字为:Sphere~SphereX
2. 图元较多的关卡
1. L_Main_AllCity_Chengbao_2
- dd_polySurface
- BookOpen
- Box001~Box003
Light&Shadow
- SpotLightDingGuang
- 去掉Cast Shadow(只影响台阶的阴影)
- 勾选Distance Field Shadows。
- RectLight 81~93:
- 去掉Cast Shadow。
- 将其替换成SourceLength 匹配的PointLight。
- 将其他面光源替换成点光源或者聚光灯(可以减少0.1~0.2ms,优先级低)。
Translucent
- 修改EasyFog的材质(大纲搜索EasyFog),从Translucent=>Additive。并且重新调整亮度。
- 大纲搜索EnvEmitter,调整大小并使用Cutoff工具对齐进行裁剪。(覆盖范围过大)。修改材质MI_Env_Inst~MI_Env_Inst22,从Translucent=>Additive。并且重新调整亮度。
2023.6.5优化建议
-
舞台观众、荧光棒去掉CastShadow,同时考虑使用Nanaite
-
浮游炮材质重Masked=>不透明
-
烟花材质重Translucent=>Additive
-
Sequence进入舞台镜头时对看不见的建筑物进行隐藏操作。
-
主舞台所有模型进行Merge,并且设置成Nanite。
-
主舞台DMX灯光开启DisableLight。
-
调整Lumen渲染参数或者后处理盒子参数:
- Lumen Scene Lighting Quality: 2 =>0.25
- Lumen Scene Detail:4=>1
- Lumen Scene View Distance:20000=>1000~3000
- Max Trace Distance:20000=>1000~3000
L_Dacapo5
问题:
- 模型问题
- 模型较多、面数较高且场景静态模型没有设置成Nanite。使得剔除与BasePass渲染延迟过高。
- 花草不是Instance
- 花卉、草的的材质有优化空间。
- 阴影
- 有2个方向光投射阴影,关闭其中一个。并且使用距离场阴影。
- Lumen
- 设置Lumen参数,去除草地对GI的计算。
- 天空上的透明体积雾效果
BasePass渲染延迟较高的模型: HUABAN_toon hua 123 instances 19501-19515 4775.936 grass0 hua 123 instances 19481-19489 4387.84 MI_grass_01_Inst_gbl SM_grass_01_gbl_lv 31 instances 14016-14025 2996.224 HUABAN_PINK_toon1 hua_pink 35 instances 15286-15291 1172.416 grass0 hua_pink 35 instances 19491-19499 1107.968 HUAXIN_toon_toon1 hua 123 instances 15266-15274 572.416 MM_Grass HUA002 2 instances 14405-14415 440.32 M_plants SM_sf_flower_05 13548-13551 193.536 M_plants SM_sf_flower_05 13739-13742 191.488 M_plants SM_sf_flower_05 13734-13737 167.936 HUAXIN_toon_toon1 hua_pink 35 instances 15276-15284 164.832 M_plants SM_sf_flower_05 13669-13672 128.00 M_plants SM_sf_flower_05 3 instances 13664-13667 124.928
L_True
- 模型问题
- Nanite与Instance(主要是电视机)
- VolumetricSpotlightEngine 是拿来干什么的?
- 灯光
- 关闭投射阴影(尤其是点光源,包括天光)
- 天光
- SpotLight11
- SpotLight12
- SpotLight2
- DirectionalLight
- PointLight1~6
- 调整灯光投射范围(有一些太远了)
- 关闭投射阴影(尤其是点光源,包括天光)
- 13_Mat_DianShiJi14 贴花看不出有什么作用。
- 黑色遮罩的几个Plane是干什么的
- 中间的几个透明片删掉
- 中间数据库的材质重Tranlucent => Additive
- 几个透明的粒子效果将材质从Tranlucent => Additive( 鬼影问题很大)
BasePass渲染延迟较高的模型: monitorE_col_High_A_Mat2 monitorE_High_Geo_Grp 90 instances 12336-12351 2444.288 TTest monitorE_High_Geo_Grp 28 instances 12006-12014 761.856 monitorE_col_High_A_Mat2 monitorE_High_Geo_Grp 12 instances 12353-12357 337.92 monitorE_col_High_A_Mat monitorE_High_Geo_Grp 11 instances 12837-12852 308.224 monitorF_col_high_A_Mat monitorF_High_Geo_Grp 107 instances 12870-12884 197.632 TTest monitorE_High_Geo_Grp 6 instances 11961-11969 183.296 monitorG_col_High_A_Mat3 monitorG_High_Geo_Grp 66 instances 11542-11552 159.7 monitorA_col_High_Mat3 monitorA_High_Geo_Grp 168 instances 12576-12590 153.536 monitorD_col_High_A_Mat monitorD_High_Geo_Grp 27 instances 12283-12297 135.168 monitorG_col_High_A_Mat1 monitorG_High_Geo_Grp 47 instances 11448-11480 115.648
L_XBLA xiubolian(休伯利安)
- 移除没有明显投影效果的灯光。
- 重写DMX插件,CPU GPU 负载压力较大。
- Separate Translucency:去除勾选。
模型优化
- 将场景中的静态模型都设置成Nanite。
- 将BP_FeiChuan模型进行合并。
- 如果飞船模型如果需要CastShadow则需要在模型里勾选Generate Distance Field。
xbla
开启Nanite,以及勾选Generate Distance Field。 MininumResidency:2MB Fallback Relative Error:1.0=> 0.1~0.0
关闭FeiChuang蓝图中StaticMesh的Shadow
Light&Shadow
-
远处的几个小飞船 去掉CastShadow选项。
-
DirectionalLight
- Num Dynamic Shadow Cascades:5=>3
- Dynamic Shadow Distance MovableLight:20000=>5000
- DistanceField Shadow Distance:51200=>5000
- Shadow Resolution Scale:1=>0.1~0.5
-
SpotLight3
- 关闭CastShadow(3与4至少关一个)
- Attenuation Radius:11052.831055=> 2040
- Shadow Resolution Scale:1=>0.5
- 第二次修改
- Outer Cone Angle 44=>40
- Shadow Resolution Scale:0.5=>0.3
-
SpotLight4
- 关闭CastShadow(3与4至少关一个)
- Attenuation Radius:12052.831055=>4000.0
-
点光源
- 关闭阴影
- 降低Attenuation Radius到合适范围。
- 删除机翼处重新的点光源,pointLight81
Lumen
调整Lumen渲染参数或者后处理盒子参数: Lumen Scene Lighting Quality: 2 =>1 Lumen Scene Detail:4=>1 Lumen Scene View Distance:20000=>5000 Max Trace Distance:20000=>5000
Translucent
Nebula
以下几个建议删除: BP_NebulaProceduralGenerator BP_NebulaProceduralGenerator2 BP_NebulaProceduralGenerator3N BP_NebulaProceduralGeneratorMove BP_NebulaProceduralGeneratorMove2
- BP_NebulaProceduralGenerator5
- Volumetric Sphere Amount:10=>1~5(推荐1)
- 效果会大变
- Min Sphere Radius (Km):0.25=> 0.1~0.2
- Max Sphere Radius (Km):0.75=> 0.6~0.7
- BP_NebulaProceduralGenerator6
- Volumetric Sphere Amount:10=>1~3(推荐1)
- Quality:Hight => Low~Medium
- 效果会大变
- Min Sphere Radius (Km):0.25=> 0.1~0.2
- Max Sphere Radius (Km):0.75=> 0.6~0.7
远景星云考虑使用SceneCapture渲染出来,再贴到一个片上。
StarCluster
建议使用Niagara重做一个透明区域太多了。
Domineer_Showcase
Sequence:Seq_Seq_Domin_XR 鬼影问题:
- 修改材质,从Masked=> Translucent,并且开启材质的Responsive AA。
NightGlow
CustomDepth
- MI_Icelandic_Rock_Cliff_ucdmcawdy_4K_Inst2_Normal
没有特殊需要,把PostProcessing-Custom Depth-Stencil Pass改成Disable。
Shadow
- ~~SpotLight ~~
- ~~SpotLight2 ~~
- ~~SpotLight4
geogrp29下面的灯- stone_Anim2
CasShadow关了。
Lumen
- Lumen Scene Lighting Quality: 1=>0.25
- Lumen Scene View Distance:20000=>1000
- Max Trace Distance:20000=>1000
或者考虑换成烘焙阴影(不太合适)。
Nanite
特效Mesh:
- NS_Storns
- SM_Strom_piece_1884
- SM_Strom_piece_1875
- SM_Strom_piece_1900
场景模型控制 & WuTai破碎
- 在舞台模型出现后,使用Sequence将wutai破碎下面的破碎模型都隐藏了。
- 将外部六棱柱与内部六棱柱分开导出,并将内部六棱柱转换成Instance Static Mesh。
- 使用StaticMesh替换Landscape。
透明物体
- EasyFog材质从Translucent=>Additive
- SM_Cloud_Single的材质从Translucent=>Additive
- geogrp的NewMaterial1_Inst从Translucent=>Additive
2023.6.11
- GameThread 13.4ms
WorldTick (4.3ms =>3)进地形改成StaticMesh,选中地形,File => Selected (1.3ms)减少NiagaraActor数量。
- RenderThread 43.1ms
- InitViews 9.8ms
- GatherDynamicMeshElements 7.4 ms
- InitViews 9.8ms
理论上WuTai优化极限
- 关闭光线追踪
- 体积云参数调节
删除模型测试:
- 原始状态延迟:29~32
- 删除WuTai FbxScene_zhuzi 21~22
- 删除FbxScene_zhuzi2
8 2830 - WuTai 全部删除 23~25
- Wutai1 几乎没有变化
- Wutai2 26~28
- Wutai3 26~28
- 删除FbxScene_zhuzi2
替换模型之后:19~21ms
可以Instance的WuTai网格
删除以下网格并且使用 替换
- piece_0
- piece_1
- piece_2**
- piece_4**
- piece_6**
- piece_7
- piece_8
- piece_9
- piece_10**
- piece_13**
- piece_14
- piece_15**
- piece_18**
- piece_21**
- piece_23**
- piece_24
- piece_25
- piece_26**
- piece_28**
- piece_29
- piece_30
- piece_31
- piece_32**
- piece_35**
- piece_36**
- piece_38**
- piece_40**
- piece_41
- piece_42**
- piece_45**
- piece_46
- piece_47
- piece_48**
- piece_51**
- piece_53**
- piece_54**
- piece_56**
- piece_57
- piece_58
- piece_59
- piece_60
- piece_61
- piece_62**
- piece_64**
- piece_65
- piece_66
- piece_67
- piece_68
- piece_69
- piece_70
- piece_71
- piece_72
- piece_73
- piece_74
- piece_75
- piece_76
- piece_77
- piece_78**
- piece_81**
- piece_82**
- piece_84**
- piece_85
- piece_86
- piece_87
- piece_88
- piece_89
- piece_90**
- piece_93**
- piece_94**
- piece_97**
- piece_98
- piece_99
- piece_100
- piece_101
- piece_102
- piece_103**
- piece_105**
- piece_107**
- piece_108
- piece_109**
- piece_112**
- piece_115**
- piece_117**
- piece_118
- piece_119
- piece_120
- piece_121
- piece_122**
- piece_124**
- piece_125
- piece_126**
- piece_104
- piece_12
- piece_44
- piece_92
- piece_123
- piece_63
- piece_5
- piece_11
- piece_33
- piece_111
- piece_79
- piece_17
- piece_22
- piece_37
- piece_43
- piece_114
- piece_27
- piece_34
- piece_106
- piece_116
- piece_110
- piece_16
- piece_19
- piece_83
- piece_95
- piece_20
- piece_49
- piece_50
- piece_91
- piece_113
L_Dacapo6
CPU
- CPU粒子(删除看不到的Fog)
- NewBlueprint
- P_Wind
- BP_AddCommand
- BP_LightControl
GPU
植被
镜头:
- 1612 GPU 37ms
- 2568 GPU 38ms
- 3233 GPU 38ms
- 删除数量为0的植被
- 将所有植被模型设置为Nanite。
地形启用Nanite。- 转Nanite之前,需要修改材质函数MF_Grow,将里面的ObjectPosition节点改成float3(0,0,0) => TransformPosition(Instance&ParticleSpace)这2个节点
- r.Nanite.AllowWPODistanceDisable
- r.Lumen.DiffuseIndirect.MeshSDF.RadiusThreshold 100
- 隐藏额外的灯光:006~013,并且将非卡通角色照明灯光的ToonIntensity设置为0
- 将DMX灯光相关的模型用Sequence控制隐藏一下。
- 将建筑物都使用默认材质进行替换。不要使用卡通材质。
- r.Shadow.Virtual.Cache.MaxMaterialPositionInvalidationRange 1000
- SM_Beam_RM 系列,用Sequence设置可见性。
删除额外的东西
- 删除额外Landscape2,使用StaticMesh代替
Sequence 场景可见性优化
Squence设置物体可见性:
- NewBlueprint :
Lumen
PostProcessVolumn => Lumen
- Lumen Scene Lighting Quality: 2 => 1
- Lumen Scene Detail:2 => 1
- Final Gather Quality:3 => 1
- Lumen Scene View Distance:20000 => 5000
- Max Trace Distance:20000 => 5000
2023.6.10
- 删除场景中的垃圾
- NewBlueprint系列
- 需确认用途
- SM_Clouds_346_3
- SM_Clouds_346_01
- 替换成StaticMeshInstance 并且转成Nanite
- ZhuDingHongEXP~ZhuDingHongEXP1659
- stone目录下的模型 SM_ruins_20~SM_ruins_87
- 新建文件夹1目录下的Cube~Cube18
- JuHua1244
- SHIKUAI_对象001
- SM_cliff_stone
- SM_GrassClumpFonce
- ZhuDingHongEXP2026
- 优化粒子 Fx_WaterFall
- 减少粒子数量以及生命。
- 删除所有镜头都看不到的粒子。(大致可以删掉一半),一些只有单个镜头可以看到的可以用Sequence手动K一下可见性。
- 替换粒子(改成GPU或者面片或者直接删除)
- P_Wind
- GameThread
- 删除额外的2个地形,并使用一个地形进行还原。
- RenderThread
- InitViews
- 几个角色脸部表情骨骼体 CastShadow 去掉
- InitViews
L_Rubia
- PlanearReflection 删除,因为已经使用了屏幕空间反射。
- 因为场景都是透明物体切没有Nanite会导致VSM无法缓存,所以需要使用ShadowMap。
L_LiangZiZhiHai
模型转Nanite
- zhuwutai_Cube25
- wutai003
- SM_BENHUAI_BOX_1
- SM_BENHUAI_BOX_2
- SM_BENHUAI_BOX_6
- SM_BENHUAI_BOX_5_DJ
- SM_BOX_HEZI_HEKUAI
- SM_BOX_HEZI_HEKUAI_GanCui
- SM_GaoSuiBox
- SM_KongZhonXuanFU
- SM_LiaBianBox
- SM_ShuiJing_box_ID3
灯光&Shadow
- 关闭点光源阴影
透明材质(Translucent => Additive)
- M_StaticMeshSkinParticle_Inst
- MI_Env_Inst2
- M_XuanWo_Inst1
- Stage_SeaOfQuanta_ErodedLand_UI06_Mat_Inst
- M_BP_EasyFog_2
- M_SkyWhiteJianBian_Inst1
Lumen
PostProcessVolumn => Lumen
- Lumen Scene Lighting Quality: 1 => 0.25
- Lumen Scene View Distance:20000 => 1000
- Max Trace Distance:20000 => 1000
粒子(严重影响性能!考虑删除或者优化)
- EnvEmitter_System02
- BP_EasyFog_2
合并模型
将场景的中的圆环状模型、Box模型合并一下。
L_JianZhong
Shadow
- Ultra_Dynamic_Sky中的方向光
- Dynamic Shadow Distance MovableLight:20000 => 10000
- Num Dynamic Shadow Cascades:5 => 1
- Distance Field Shadows:True => False
- 关闭阴影
- SpotLight17
- SpotLight18
- SpotLight
模型优化
- 将场景中的石头、后景石头、剑以及剑下面的石头都转成Instance
- 场景中的模型转成Nanite。
- 相机背后看不到的模型都删除了。
- 删除场景中的CrystalFlw模型
- 将场景中的重复模型使用单个模型重新摆放,最后设置成Instance。
Shadow
- 关闭阴影
- PointLight
- PointLight4
- PointLight5
- PointLight6
- SpotLight2
- SkyLight
- VolumetricSpotlightEngine4的SpotLight
- 删除灯光
- PointLight2
- PointLight3
- DirectionalLight
- Dynamic Shadow Distance MovableLight:20000 =>4000
- Num Dynamic Shadow Cascades:5 => 1
- DistanceField Shadow Distance:4000
- DistanceField Trace Distance:25000 =>2000~4000
- Shadow Resolution Scale:1 => 0.1
Lumen
PostProcessVolumn => Lumen
- Lumen Scene Lighting Quality: 2 => 0.25
- Lumen Scene Detail:2 => 1
- Final Gather Quality:3 => 1
- Lumen Scene View Distance:20000 => 1000
- Max Trace Distance:20000 => 1000
ProjectSettings - Lumen (以下设置仅提高1~2帧)
- Use Hardware Ray Tracing when available:
- High Quality Translucency Reflections:
- Software Ray Tracing Mode:DetailTracing => GlobalTracing
- r.Lumen.TraceMeshSDFs.Allow = 0
添加DefaultScalability.ini
将Hight级别的Lumen设置覆盖到Epic级别设置。
Fog
- ExponentialHeightFog1:关闭体积雾。
粒子 转换成GPU粒子或者尽量减少CPU粒子数量
- NS_TextRain_Copy (字符雨生成器)
- NS_Test
- NS_Test_25
- NS_STM_SkinParticle
- M_StaticMeshSkinParticle_Inst
模型
- SkyBox (删除)
- 透明片:Plane22~Plane41,使用的材质的透明度是0,考虑删除。
- 隐藏电路板:Plane~138
- 黑色遮罩:Plane4~Plane19
- Nanite & 转成Instance
- box1
- monitorG_High_Geo_Grp_2
- 转Nanite & 合并 || 删除看不到
- monitorG_High_Geo_Grp_2
- SM_DIANSHIJI_HeCheng100
Sequence中控制隐藏粒子与看不到的模型(电视机)
- monitorF_High_Geo_Grp12~1516
材质(Translucent=>Additive)
- M_MovingLineTest_Inst1_TRUE
- M_MovingLineTest_Inst1_TRUE1
- M_MovingLineTest_Copy
- BengHuai_True/Material
- M_BeiJing
- M_BeiJing_Inst
- M_OP~M_OP3
2023.6.13
- 电视机模型转Instance。
- 减少字符雨数量
- 关闭光线追踪
- ExponentialHeightFog1:关闭体积雾。
电视机贴图有拖影问题
DLSS & TSR & FSR 测试
测试场景:L_True,分辨率4K 100%,笔记本3070,镜头sequence 604 的1840帧
- TSR ScreenPercentage:66 GPU帧数:27~29
- TAA ScreenPercentage:100 GPU帧数:36~37
- FSR+TAA ScreenPercentage:66 GPU帧数:26~28
- DLSS+TAA ScreenPercentage:66 GPU帧数:26~28
可以在DefaultEngine.ini里面添加渲染分辨率: [/Script/Engine.RendererSettings] r.screenpercentage=66 r.screenpercentage=50
L_BengHuai_Oaths_01
灯光
L_BengHuai_Oaths_Close
灯光
Lumen
r.Lumen.ScreenProbeGather.AdaptiveProbeAllocationFraction =0.5 =>0.1