我是否必须在 Unity 中的网格中使用共享顶点



我想在 Unity3D 中创建具有平面着色外观的程序化生成的景观网格体。

我认为最好为每个三角形创建三个唯一的顶点,并对顶点使用一个计算法线。构建此网格将导致冗余的顶点位置信息。(会对渲染时间产生影响吗?

无论如何。。。问题是我想在这个网格上使用着色技术,例如环境光遮蔽。我不想弄乱 Unity3D 对其着色器所期望的网格拓扑。

创建具有共享顶点的网格,添加自定义顶点属性(例如"flat_normal"并自定义着色器以使用它)是否更好?

简单的答案是

Unity 丝毫没有"寻找"共享的 vert。没有 3D 管线与共享顶点有任何关系。 无论如何,共享顶点都不会帮助或阻碍 3D 管道。

(很多时候,例如,当我们制作动态网格时,我们只是"根本不使用共享顶点",因为正如您可能已经发现的那样,不使用共享顶点通常要简单得多。

使用共享 vert 的唯一原因是,如果出于某种原因,它恰好让您更方便。 在这种情况下,3D 管线(Unity 或其他地方)"允许"共享顶点,没有缺点。

使用共享顶点可能有 2 个注意事项:

  • 减少内存使用量。(只是轻微的,但如果您需要较少的 UV1、UV2、法线、顶点,它可以加起来)
  • 以更方便地共享法线。(如果要保持表面光滑,只需更改顶点的一个法线。

这些都不是大原因,但与您遇到的其他 3D 程序中的大多数网格一样,最好习惯共享顶点。

最新更新