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