BlueRoseNote/02-Note/DAWA/武庚纪优化.md
2023-06-29 11:55:02 +08:00

135 lines
5.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 优化记录
1. 灯光优化
   1. 主场景(城楼、栈桥与城门部分)
      1. 主光源
         1. 将DynamicShadowDistanceMoveableLight调整到合适范围近景细节阴影40000 => 4000~15000范围
         2. 调整DistanceFieldShadowDistance远景的软阴影效果20000 => 4000~15000如果远景阴影效果有问题再调整DistanceFieldTraceDistance100000.0 => 100000.0~40000000.0
         3. 调整Num Dynamic Shadow Cascades4=> 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 TimeSpawn 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. 设置InstancedStaticMeshComponentStaticMesh与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
  - DistanceFieldShadowDistance40000=》10000
- DirectionalLight2
  - 级联4=》2
  - DynamicShadowDistanceMoveableLight 40000=》25000
  - DistanceFieldShadowDistance10000=》1000000.0
  - DistanceFieldTraceDistance  =>2500000.0
- DirectionalLight4
  - 级联5=》0
  - DynamicShadowDistanceMoveableLight 40000000.0=》4000.
  - DistanceFieldShadowDistance1000000.0 =》1000000.0
  - DistanceFieldTraceDistance  100000.0=》40000000.0
##### 2022.9.21
- [x] DirectionalLight2
  - 删除
- [ ] PointLight3
- 亮度150=》50
- 关闭CastShadow
- [ ] SpotLight11
- ShadowResolutionScale1=》0.1
- 或者考虑降低角度,只对着城楼。
- [ ] RectLight7
- 建议调整范围 =》降低至能刚好包裹城门的区域。
- 亮度 500=>100
- 关闭阴影
- 或者删了
- [ ] SpotLight25
- 降低半径2000 角度 60
- 阴影分辨率1=>0.5
- [ ] SpotLight26
- 降低半径到2500角度降低到45亮度提高=》10000 Shadow分辨率 1=》0.5
- [ ] SpotLight27
- 降低半径到2300角度降低到45亮度提高=》12000Shadow分辨率 8=》0.5
- [ ] PointLight56
- 关闭CastShadow
- 降低半径到1600
- [ ] PointLight57
- 关闭CastShadow 或者降低阴影分辨率 0.1=》0.01
- 降低半径到700
- [ ] PointLight74
- 关闭CastShadow
- 或者换成SpotLight
- [ ] RectLight14
- 降低半径到2860
- 关闭CastShadow
- 或者换成SpotLight
### 后处理
- AmbientCubeMapIntensity 1=》0
- Ambient OcclusionIntensity 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优化方法与实践笔记]]