# 有待改进的地方 1. 角色卡通渲染:建议之后自研卡通渲染引擎。 2. DMX Light Beam性能问题。 3. 因为成片后续会进行重新渲染,建议编写一个插件 记录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为。 ### 优化方案 1. DMX模型改成StaticMeshInstance,Gun的模型是Masked,建议改成不透明。 2. 关闭DMX灯光中的照明效果,因为不会对着模型照明。 1. 场景中的组件勾选**Disable Lights** 3. StaticMeshLens 组件可以按照距离进行关闭。(BP_StaticStrobe_C、BP_MovingHead_C) 1. 场景中的组件中的StaticMeshLens去掉**Visible**。 2. Sequence中手动设置**Visible**。 4. Beam材质 1. 给BeamRayMarch的DMX Max Light Distance 乘上一个变量倍率,之后适当减少DMX Max Light Distance大小,建议的倍率为1.2~1.5,长度为1/1.2~1/1.5; 给BeamRayMarch的DMX Zoom 乘上一个变量倍率,Zoom 5=>4.5~3,并且将倍率调整成合适数值。 2. 调整Zoom Quilty 1=>1.5~2,并且适当调整DMX Lens Radius的数值,减少断点问题。 5. ## 优化目标 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 步骤: 1. 场景静态模型设置成Nanite,以下模型需要额外考虑是否开启Nanite: 1. 带有世界位移与Masked的模型,比如花 草 模型。 2. 将一些不会动的模型都设置成Static。 3. 告知拍摄镜头需求,是全景还是需要360°都有拍摄要求。 4. 确定场景之后不会进行改动之后,使用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 1. SpotLightDingGuang 1. 去掉Cast Shadow(只影响台阶的阴影) 2. 勾选Distance Field Shadows。 2. RectLight 81~93: 1. 去掉Cast Shadow。 2. 将其替换成SourceLength 匹配的PointLight。 3. 将其他面光源替换成点光源或者聚光灯(可以减少0.1~0.2ms,优先级低)。 #### Translucent 1. 修改EasyFog的材质(大纲搜索EasyFog),从Translucent=>Additive。并且重新调整亮度。 2. 大纲搜索EnvEmitter,调整大小并使用Cutoff工具对齐进行裁剪。(覆盖范围过大)。修改材质MI_Env_Inst~MI_Env_Inst22,从Translucent=>Additive。并且重新调整亮度。 #### 2023.6.5优化建议 1. 舞台观众、荧光棒去掉CastShadow,同时考虑使用Nanaite 2. 浮游炮材质重Masked=>不透明 3. 烟花材质重Translucent=>Additive 4. Sequence进入舞台镜头时对看不见的建筑物进行隐藏操作。 5. 主舞台所有模型进行Merge,并且设置成Nanite。 6. 主舞台DMX灯光开启DisableLight。 7. 调整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 问题: 1. 模型问题 1. 模型较多、面数较高且场景静态模型没有设置成Nanite。使得剔除与BasePass渲染延迟过高。 2. 花草不是Instance 3. 花卉、草的的材质有优化空间。 2. 阴影 1. 有2个方向光投射阴影,关闭其中一个。并且使用距离场阴影。 3. Lumen 1. 设置Lumen参数,去除草地对GI的计算。 4. 天空上的透明体积雾效果 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 1. 模型问题 1. Nanite与Instance(主要是电视机) 2. VolumetricSpotlightEngine 是拿来干什么的? 3. 灯光 1. 关闭投射阴影(尤其是点光源,包括天光) 1. 天光 2. SpotLight11 3. SpotLight12 4. SpotLight2 5. DirectionalLight 6. PointLight1~6 2. 调整灯光投射范围(有一些太远了) 4. 13_Mat_DianShiJi14 贴花看不出有什么作用。 5. 黑色遮罩的几个Plane是干什么的 6. 中间的几个透明片删掉 7. 中间数据库的材质重Tranlucent => Additive 8. 几个透明的粒子效果将材质从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(休伯利安) 1. 移除没有明显投影效果的灯光。 2. 重写DMX插件,CPU GPU 负载压力较大。 3. Separate Translucency:去除勾选。 ### 模型优化 1. 将场景中的静态模型都设置成Nanite。 2. 将BP_FeiChuan模型进行合并。 3. 如果飞船模型如果需要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 鬼影问题: 1. 修改材质,从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 #### 理论上WuTai优化极限 - 关闭光线追踪 - 体积云参数调节 - 删除模型测试: - 原始状态延迟:29~32 - 删除WuTai FbxScene_zhuzi 21~22 - 删除FbxScene_zhuzi2~8 28~30 - WuTai 全部删除 23~25 - Wutai1 几乎没有变化 - Wutai2 26~28 - Wutai3 26~28 替换模型之后: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 1. 删除数量为0的植被 2. 将所有植被模型设置为Nanite。~~地形启用Nanite。~~ 1. 转Nanite之前,需要修改材质函数MF_Grow,将里面的ObjectPosition节点改成float3(0,0,0) => TransformPosition(Instance&ParticleSpace)这2个节点 3. r.Nanite.AllowWPODistanceDisable 4. r.Lumen.DiffuseIndirect.MeshSDF.RadiusThreshold 100 5. 隐藏额外的灯光:006~013,并且将非卡通角色照明灯光的ToonIntensity设置为0 6. 将DMX灯光相关的模型用Sequence控制隐藏一下。 7. 将建筑物都使用默认材质进行替换。不要使用卡通材质。 8. r.Shadow.Virtual.Cache.MaxMaterialPositionInvalidationRange 1000 9. 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 去掉 - ## 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 1. 电视机模型转Instance。 2. 减少字符雨数量 3. 关闭光线追踪 4. 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