性能优化(30)——Terrain地形优化


  • Unity的地形工具在移动端的效率不高,尤其是Terrain Shader不够轻量
  • 一般都是用地形Mesh替代它,最好的方式是自己写一套地形烘焙的工具,根据Terrain Date将Mesh信息与混合后的地形纹理烘焙出来,并通过Prefab生成地形块
  • 如资源商店Terrain To Mesh 2021,但它还有一些缺点:
    • 它烘焙使用的Sprite Shader并不支持SRP Batcher,主要是太多的材质属性没有定义到const buffer中;而且由于Shader使用大量关键字来定义材质属性,导致改起来很麻烦
    • 它的地形分块并不能对应多张地表diffuse map,这会导致如果原地形较大的情况下,一张diffuse map即使再大的分辨率,清晰度也是不够的,所以还是要用Sprite Shader来做,这就导致地表Mesh的Shader还是不够简单,纹理采样开销并不比Unity Terrain方式轻多少