## 优化记录 1. 灯光优化    1. 主场景(城楼、栈桥与城门部分)       1. 主光源          1. 将DynamicShadowDistanceMoveableLight调整到合适范围(近景细节阴影):40000 => 4000~15000范围          2. 调整DistanceFieldShadowDistance(远景的软阴影效果):20000 => 4000~15000,如果远景阴影效果有问题再调整DistanceFieldTraceDistance:100000.0 => 100000.0~40000000.0          3. 调整Num Dynamic Shadow Cascades:4=> 1~3(保证阴影效果变化不大的情况下)       2. 其他辅助光源          1. 保证灯光的半径与角度刚好覆盖想要影响的物体。          2. 补光灯可以尝试低亮度不投射阴影或者高亮度+贴花,尽可能避免高亮度加投射阴影。          3. 如果需要投射阴影,请适当调整阴影分辨率:1=> 0.05~0.8    2. 不太容易看的场景(坑底与中间浮岛下面部分)       1. 尽量保证只有灯光效果关闭阴影效果。如果需要阴影就使用SpotLight,不投射阴影可以用点光源。       2. 尽可能减少灯光数量。即坑底部分的照明可以选择使用贴花Fake    3. 远景山脉:阴影使用Fake贴花。避免使用方向光来投射阴影。    1. 如果需要阴影,可以将Num Dynamic Shadow Cascades 4=>0,并且调整调整DistanceFieldShadowDistance。直接使用距离场阴影。 2. 场景优化    1. 粒子:可以调节Cut Off的裁剪系数,Spawn Time,Spawn Rate等等可以在保证效果的同时来降低粒子数量的参数    2. 模型    1. ~~制作LOD或者HLOD。~~ 使用Nanite    2. 考虑使用HSIM或者 UE5出的Light Weight Instances https://www.youtube.com/watch?v=QGEV8YjBGHQ    1. 启用Light Weight Instances插件。    2. 创建一个蓝图类LightWeightInstanceStaticMeshManager类,并且拖入场景中。    3. Manager设置RepresentedClass,指定新建的Actor,这里假定名字为AA(里面只有StaticMeshComponent)    4. 设置InstancedStaticMeshComponent,StaticMesh与Materials。    5. 往场景里放入多个AA,并且选中,之后在菜单栏的Actor-Convert Actors to LightWeightinstances    3. 远景资产    1. 删除场景外的看不见的模型    2. 删除多余的地形 3. Nanaite 1. 尽可能得将模型转化成 2. 使用Nanite Tools检查哪些模型的材质有问题并解决。 ### 优化记录 #### 方向光 ##### 2022.9.20 修改远景4个DirectionalLight 动态ShadowMap阴影,可以为距离场阴影或者静态阴影。 - DirectionalLight   - 级联4=》2   - DynamicShadowDistanceMoveableLight 40000=》5000   - DistanceFieldShadowDistance:40000=》10000 - DirectionalLight2   - 级联4=》2   - DynamicShadowDistanceMoveableLight 40000=》25000   - DistanceFieldShadowDistance:10000=》1000000.0   - DistanceFieldTraceDistance:  =>2500000.0 - DirectionalLight4   - 级联5=》0   - DynamicShadowDistanceMoveableLight 40000000.0=》4000.   - DistanceFieldShadowDistance:1000000.0 =》1000000.0   - DistanceFieldTraceDistance:  100000.0=》40000000.0 ##### 2022.9.21 - [x] DirectionalLight2   - 删除 - [ ] PointLight3 - 亮度150=》50 - 关闭CastShadow - [ ] SpotLight11 - ShadowResolutionScale:1=》0.1 - 或者考虑降低角度,只对着城楼。 - [ ] RectLight7 - 建议调整范围 =》降低至能刚好包裹城门的区域。 - 亮度 500=>100 - 关闭阴影 - 或者删了 - [ ] SpotLight25 - 降低半径2000 角度 60 - 阴影分辨率1=>0.5 - [ ] SpotLight26 - 降低半径到2500,角度降低到45,亮度提高=》10000 Shadow分辨率 1=》0.5 - [ ] SpotLight27 - 降低半径到2300,角度降低到45,亮度提高=》12000,Shadow分辨率 8=》0.5 - [ ] PointLight56 - 关闭CastShadow - 降低半径到1600 - [ ] PointLight57 - 关闭CastShadow 或者降低阴影分辨率 0.1=》0.01 - 降低半径到700 - [ ] PointLight74 - 关闭CastShadow - 或者换成SpotLight - [ ] RectLight14 - 降低半径到2860 - 关闭CastShadow - 或者换成SpotLight ### 后处理 - AmbientCubeMap:Intensity 1=》0 - Ambient Occlusion:Intensity 0.7=>0 ### 粒子优化 - Niagara Cutout - https://www.youtube.com/watch?v=_T-BTiMF7XA - https://docs.unrealengine.com/4.26/en-US/RenderingAndGraphics/Niagara/EmitterReference/RenderModules/ - 4层 雾气=> 3层 - 粒子系统的 LifeTime 25=>14 ### 场景优化 - 删除场景外看不到的模型 - 删除多出的Landscape2 - 给树木等物体制作Impostors ## 优先级顺序 - [x] Stat数据查看 - 查看Stat Unit 数值,确定是GPU还是CPU瓶颈 - 查看Stat SceneRendering - ctrl+shift+, r.showmaterialdrawevents -1 r.rhicmdbypass 1 r.rhithread.enable 0 - [x] 动态灯光阴影:尝试增加级联数与其他参数。(使用低分辨率贴图来渲染阴影?使用RenderDoc查看分辨率) - [x] 远景模型距离场检查。使用DFAO,关闭SSAO - [x] 尝试干掉点光源,制作Fake灯光 贴花来代替各种灯光与阴影效果 - [x] 检查材质复杂度 - 烘焙材质,将复杂材质烘焙结果到贴图 - [x] ~~检查模型面数以及LOD(碰撞盒)~~ 改用Nanite来解决 - [x] 草地使用HISM或者UE5出的Light Weight Instances - https://www.youtube.com/watch?v=QGEV8YjBGHQ - [x] 粒子优化工具:剪裁粒子面积。 - Unreal4引擎对粒子系统半透明渲染的Overdraw做了优化。在ProjectSetting->Rendering > Optimization中有一个渲染Enable Particle Cutouts by Default选项 - [x] MergeActor工具,合并DrawCall - ~~开启DLSS插件~~ - ~~设置Dynamic分辨率~~ ## 制作流程改变 对于性能要求的项目。 1. 制作前先让TA知道目标硬件帧数。 2. 美术摆放场景后检查**距离场**。 3. 美术手动合并材质。 4. 吃透Nanite以及LOD属性设置; 5. 搭建VPN、版本管理等方便远程协作的服务。 ## 优化笔记 ![[UE5优化方法与实践笔记]]