您好,

我使用立方体组成的场景存在FPS问题,经过多个方向的尝试后,已经无更多的想法来解决这个问题。

https://preview.redd.it/e7v91e9j4d6h1.png?width=1812&format=png&auto=webp&s=36e8bb2b658df0476b9ceba0bb26de22e982046c

目前的状态
- 我的场景由约6000个立方体组成
- 有两个基于同一个着色器的材质
- 着色器已标记为SRP兼容
- 材质已启用GPU实例化
- 立方体颜色通过VertexColor设置,而不是通过material.SetColor()设置

有趣的事实
- 只有6k个立方体,却有286k个三角形?
- 23k个绘制调用,非SRP兼容

生成颜色的代码:

public void Init(Color32 color, bool immortal)
    {
      ...

      Mesh filter = Skin.GetComponent<MeshFilter>()。mesh;
      Color[] colors = new Color[filter.vertexCount];
      for (int i = 0; i < colors.Length; i++)
      {
        colors[i] = color;
      }
      filter.colors = colors;

      ...
    }

调试器

调试器:更新场景

调试器:渲染模式

着色器

https://preview.redd.it/d753d8wp8d6h1.png?width=2158&format=png&auto=webp&s=d53ac6a8bbee37df78bdca32abdaa7f7187cde02

材质

https://preview.redd.it/h4rwun7u8d6h1.png?width=1686&format=png&auto=webp&s=2e1b58a6785d730deec44c6730519de1b0397f87

我真的不明白如何违反SRP批处理规则。
感谢您的帮助。