但是所有这些矩阵乘法都必须在CPU上和每一帧中完成,以便能够非常快速地执行(多个连续的)场景节点运动。但是,GPU可能更适合执行大量矩阵乘法,因此我正在考虑将多个部分模型矩阵发送到顶点着色器,而不是在CPU上计算所有内容。
发送每一个GPU的单个部分(因此每个节点的姿势)可能没有多大意义,因为在这种情况下,所有计算都是针对每个顶点而不是每个节点完成的,这实际上会降低性能。但是也许有很多孩子的场景节点或只有不移动的孩子(相对于其父对象)的场景节点可能是拆分模型矩阵并将乘法转移到着色器的地方。
那么,什么时候更好地将部分模型矩阵发送到着色器并将乘法运算移到GPU?还是对这根本不是一个好主意?
#1 楼
使用制服进行数学运算通常不会比在CPU上获得任何性能更高。在进行矩阵数学运算时,CPU并不比GPU慢,它的结构也无法并行执行大量数学运算。但是您实际上必须做大量的数学运算才能获胜。将额外的数据发送到GPU只是让GPU将两个矩阵相乘,几乎不会给您带来任何好处。现在,说您有一个可以蒙皮的矩阵缓冲区。是将它们全部转换为CPU上的世界空间,还是只是将额外的模型到世界空间矩阵传递给GPU,可能会变得很重要。但即使如此,它仍然取决于您的顶点与骨骼的比率。
评论
$ \ begingroup $
我依赖于计算量。GPU在数学运算方面确实非常快,因此这是尝试和基准测试的问题。
$ \ endgroup $
–迈克尔四世
15年9月3日,9:30