5.9 KiB
5.9 KiB
优化记录
- 灯光优化
1. 主场景(城楼、栈桥与城门部分)
1. 主光源
1. 将DynamicShadowDistanceMoveableLight调整到合适范围(近景细节阴影):40000 => 4000
15000范围 2. 调整DistanceFieldShadowDistance(远景的软阴影效果):20000 => 400015000,如果远景阴影效果有问题再调整DistanceFieldTraceDistance:100000.0 => 100000.040000000.0 3. 调整Num Dynamic Shadow Cascades:4=> 13(保证阴影效果变化不大的情况下) 2. 其他辅助光源 1. 保证灯光的半径与角度刚好覆盖想要影响的物体。 2. 补光灯可以尝试低亮度不投射阴影或者高亮度+贴花,尽可能避免高亮度加投射阴影。 3. 如果需要投射阴影,请适当调整阴影分辨率:1=> 0.05~0.8 2. 不太容易看的场景(坑底与中间浮岛下面部分) 1. 尽量保证只有灯光效果关闭阴影效果。如果需要阴影就使用SpotLight,不投射阴影可以用点光源。 2. 尽可能减少灯光数量。即坑底部分的照明可以选择使用贴花Fake 3. 远景山脉:阴影使用Fake贴花。避免使用方向光来投射阴影。 1. 如果需要阴影,可以将Num Dynamic Shadow Cascades 4=>0,并且调整调整DistanceFieldShadowDistance。直接使用距离场阴影。 - 场景优化
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. 删除多余的地形 - Nanaite
- 尽可能得将模型转化成
- 使用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
- 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
- 4层 雾气=> 3层
- 粒子系统的 LifeTime 25=>14
场景优化
- 删除场景外看不到的模型
- 删除多出的Landscape2
- 给树木等物体制作Impostors
优先级顺序
-
Stat数据查看
- 查看Stat Unit 数值,确定是GPU还是CPU瓶颈
- 查看Stat SceneRendering
- ctrl+shift+, r.showmaterialdrawevents -1 r.rhicmdbypass 1 r.rhithread.enable 0
-
动态灯光阴影:尝试增加级联数与其他参数。(使用低分辨率贴图来渲染阴影?使用RenderDoc查看分辨率)
-
远景模型距离场检查。使用DFAO,关闭SSAO
-
尝试干掉点光源,制作Fake灯光 贴花来代替各种灯光与阴影效果
-
检查材质复杂度
- 烘焙材质,将复杂材质烘焙结果到贴图
-
检查模型面数以及LOD(碰撞盒)改用Nanite来解决 -
草地使用HISM或者UE5出的Light Weight Instances
-
粒子优化工具:剪裁粒子面积。
- Unreal4引擎对粒子系统半透明渲染的Overdraw做了优化。在ProjectSetting->Rendering > Optimization中有一个渲染Enable Particle Cutouts by Default选项
-
MergeActor工具,合并DrawCall
-
开启DLSS插件 -
设置Dynamic分辨率
制作流程改变
对于性能要求的项目。
- 制作前先让TA知道目标硬件帧数。
- 美术摆放场景后检查距离场。
- 美术手动合并材质。
- 吃透Nanite以及LOD属性设置;
- 搭建VPN、版本管理等方便远程协作的服务。