性能优化(25)——中景简化与LOD策略

  1. 1. 传统的远景、中景、近景的概念
  2. 2. 替代体方案
  3. 3. LOD Bias

 

传统的远景、中景、近景的概念

  • 是指视距上的划分
  • 远景:视距较远。主要用于表现一些开阔景物,为了渲染总体气氛和空间感,配合景深的表现可以让画面层次感更丰富,增加整体的意境。因此远景渲染我们不需要做具体的细节表现
  • 中景:是指画面视觉中心的部分。一般用于进一步烘托整体场景气氛,需要一定的视觉和细节表现,但不需要过分强调,更多的是通过材质的颜色、质地、大范围的光影明暗来呈现
  • 近景:是视距最近的画面部分。一般突出表现在具体某个物体或角色上,需要突出表现材质的细节,比如凹凸、光影细节、反射、折射、透视等高级效果,并且通过近景占屏幕比例多少,来与中景、远景形成更好的透视感

  • 随着摄像机的移动,可能定义会出现一些重叠,近景的定义会更宽泛

  • 如果对于需要在远景、中景、近景都需要出现的物体,可以将其LOD分为4级
    • 0 —— 近景
    • 1 —— 中景
    • 2 —— 远景
    • 3 —— 剔除
  • 只需要出现在近景和中景中的物体,可以设置LOD为3级,2级为剔除
  • 只需要在近景出现的物体,可以设置为2级,0级为近景,1级为简化模型或剔除
  • 一般情况下,LOD级别设置最好不要超过5级
  • 5级情况下
    • 0 —— 原始模型
    • 1 —— 1级简化模型
    • 2 —— 2级简化模型
    • 3 —— 替代体
    • 4 —— 剔除
    • 如果不需要使用替代体技术的话,我们可以选择不超过4级的LOD设置

  • 减小阴影绘制阶段的压力:对场景中一些不必要的LOD级别上的模型不显示投影,只在LOD0级别原始模型下显示投影,其他LOD层级下的模型不显示投影
  • 还有一些静态光照下的对象,已经在阴影体内了,也不需要渲染投影,毕竟还可以通过SSAO来显示接触面的暗部

替代体方案

  • 首先,替代体方案不是没有开销的
  • 虽然替代体方案比较适合第一视角,并且摄像机变化较慢的场景类型
  • 但是选择目前Unity商店中任何一个插件实现,都必须要做一些资源和Shader上的调整,并且会带来一些未来插件更新的风险
  • 因此该方案先搁置
  • 毕竟优化是一个迭代的过程,先把一些风险小、开发工作不高,但收益大的优化方案优先来做。如果将常规手段用完后,性能还不能达到要求的,再上替代体方案

LOD Bias

  • 这个参数主要是为了多平台LOD设置分级而使用的

  • 值正好是1时,为工程内真实的设置
  • 例:
    • LOD0:100% —— 60%
    • LOD1:60% —— 10%
    • Culled:10%
    • 当LOD Bias为0.7时,
      • LOD0:100% —— 42%
      • LOD1:42% —— 7%
      • Culled:7%
    • 当LOD Bias为2时,
      • LOD0:100% —— 100%
      • LOD1:100% —— 20%
      • Culled:20%
      • 也就是向更多的细节进行适配