DirectX世界观矩阵乘法 - GPU或CPU的地方

Joh*_*son 3 directx shader gpu effects

我是directx的新手,但令我惊讶的是,我看到世界矩阵和视图矩阵的大多数例子都是顶点着色器的一部分,而不是乘以CPU并将结果传递给着色器.

对于刚性对象,这意味着对于对象的每个单个顶点,将相同的两个矩阵相乘一次.我知道GPU可以在多个顶点上并行执行此操作(实际上并不知道有多少顶点),但这不是真的效率低下,还是我只是缺少某些东西?我还是新的,无能为力.

Ant*_*eru 5

通常,您希望在CPU上执行此操作.但是,DirectX 9具有" 预处理器 " 的概念,这意味着这种乘法将在CPU上预先完成.对于较新的API,这已被删除,但它可能与您正在查看的示例非常相关.

此外,与内存访问相比,现代GPU在ALU操作方面非常快.具有适度复杂的顶点着色器(可能具有纹理提取)意味着进行矩阵乘法所需的数学是免费的,因此作者可能甚至没有打扰过.

无论如何,最佳做法是在CPU上预先乘以一切.同样适用于将像素着色器中的工作移动到顶点着色器中(如果某个东西在三角形上是恒定的,则不要按像素计算它.)