2
在现代GPU上组织顶点数据的最高效方式
说我有顶点组成的模型,每一个position,normal,tangent,和texcoord属性,其中三角形由指数三元规定。 如果我们只关注顶点属性,那么我知道两种广泛的策略:数组的结构和结构的数组。我还听说结构数组是首选的,因为它会增加给定顶点的属性的内存局部性(并因此增加高速缓存局部性)。 确实可以提高性能吗?我能想到的主要方式是通过顶点索引,该索引要求光栅化器获取早已从缓存中逐出的顶点数据。如果像这样的顶点数据访问是随机的,那么将顶点的所有属性都保留在同一缓存行上肯定会使事情变得更快,但这不是可以通过优化三角形规格的顺序来最大程度缓解的问题吗? 此外,据我了解,现代GPU在解压缩相同类型的长矢量上可能比许多类型的结构的矢量更好。如果优化了索引顺序,那么数组结构布局是否可以始终胜过相同顶点数据的结构数组布局?