BlueRoseNote/02-Note/DAWA/Old/BH3音乐会场景优化.md

18 KiB
Raw Permalink Blame History

有待改进的地方

  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材质

变量:

  • NSliceNearPlane 交点世界坐标
  • NDepth
  • FSliceFarPlane 交点世界坐标
  • FDepth

MF_WSIntersection如果没有相交RelIntersectPos为IntersectDistance为。

优化方案

  1. DMX模型改成StaticMeshInstanceGun的模型是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.21.5长度为1/1.21/1.5 给BeamRayMarch的DMX Zoom 乘上一个变量倍率Zoom 5=>4.5~3并且将倍率调整成合适数值。
    2. 调整Zoom Quilty 1=>1.5~2并且适当调整DMX Lens Radius的数值减少断点问题。

优化目标

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 Detail4=>1
    • Lumen Scene View Distance20000=>1000~3000
    • Max Trace Distance20000=>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。 MininumResidency2MB Fallback Relative Error1.0=> 0.1~0.0

关闭FeiChuang蓝图中StaticMesh的Shadow

Light&Shadow

  • 远处的几个小飞船 去掉CastShadow选项。

  • DirectionalLight

    • Num Dynamic Shadow Cascades5=>3
    • Dynamic Shadow Distance MovableLight20000=>5000
    • DistanceField Shadow Distance51200=>5000
    • Shadow Resolution Scale1=>0.1~0.5
  • SpotLight3

    • 关闭CastShadow(3与4至少关一个)
    • Attenuation Radius11052.831055=> 2040
    • Shadow Resolution Scale1=>0.5
    • 第二次修改
    • Outer Cone Angle 44=>40
    • Shadow Resolution Scale0.5=>0.3
  • SpotLight4

    • 关闭CastShadow(3与4至少关一个)
    • Attenuation Radius12052.831055=>4000.0
  • 点光源

    • 关闭阴影
    • 降低Attenuation Radius到合适范围。
    • 删除机翼处重新的点光源pointLight81

Lumen

调整Lumen渲染参数或者后处理盒子参数 Lumen Scene Lighting Quality 2 =>1 Lumen Scene Detail4=>1 Lumen Scene View Distance20000=>5000 Max Trace Distance20000=>5000

Translucent

Nebula

以下几个建议删除: BP_NebulaProceduralGenerator BP_NebulaProceduralGenerator2 BP_NebulaProceduralGenerator3N BP_NebulaProceduralGeneratorMove BP_NebulaProceduralGeneratorMove2

  • BP_NebulaProceduralGenerator5
    • Volumetric Sphere Amount10=>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 Amount10=>1~3推荐1
    • QualityHight => 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

SequenceSeq_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 Distance20000=>1000
  • Max Trace Distance20000=>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_zhuzi28 2830
    • 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 Detail2 => 1
  • Final Gather Quality3 => 1
  • Lumen Scene View Distance20000 => 5000
  • Max Trace Distance20000 => 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 Distance20000 => 1000
  • Max Trace Distance20000 => 1000

粒子(严重影响性能!考虑删除或者优化)

  • EnvEmitter_System02
  • BP_EasyFog_2

合并模型

将场景的中的圆环状模型、Box模型合并一下。

L_JianZhong

Shadow

  • Ultra_Dynamic_Sky中的方向光
    • Dynamic Shadow Distance MovableLight20000 => 10000
    • Num Dynamic Shadow Cascades5 => 1
    • Distance Field ShadowsTrue => False
  • 关闭阴影
    • SpotLight17
    • SpotLight18
    • SpotLight

模型优化

  • 将场景中的石头、后景石头、剑以及剑下面的石头都转成Instance
  • 场景中的模型转成Nanite。
  • 相机背后看不到的模型都删除了。
  • 删除场景中的CrystalFlw模型
  • 将场景中的重复模型使用单个模型重新摆放最后设置成Instance。

Shadow

  • 关闭阴影
    • PointLight
    • PointLight4
    • PointLight5
    • PointLight6
    • SpotLight2
    • SkyLight
    • VolumetricSpotlightEngine4的SpotLight
  • 删除灯光
    • PointLight2
    • PointLight3
  • DirectionalLight
    • Dynamic Shadow Distance MovableLight20000 =>4000
    • Num Dynamic Shadow Cascades5 => 1
    • DistanceField Shadow Distance4000
    • DistanceField Trace Distance25000 =>2000~4000
    • Shadow Resolution Scale1 => 0.1

Lumen

PostProcessVolumn => Lumen

  • Lumen Scene Lighting Quality 2 => 0.25
  • Lumen Scene Detail2 => 1
  • Final Gather Quality3 => 1
  • Lumen Scene View Distance20000 => 1000
  • Max Trace Distance20000 => 1000

ProjectSettings - Lumen 以下设置仅提高1~2帧

  • Use Hardware Ray Tracing when available
  • High Quality Translucency Reflections
  • Software Ray Tracing ModeDetailTracing => 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 ScreenPercentage66 GPU帧数27~29
  • TAA ScreenPercentage100 GPU帧数36~37
  • FSR+TAA ScreenPercentage66 GPU帧数26~28
  • DLSS+TAA ScreenPercentage66 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