135 lines
5.9 KiB
Markdown
135 lines
5.9 KiB
Markdown
|
## 优化记录
|
|||
|
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优化方法与实践笔记]]
|