Joh*_*son 3 directx shader gpu effects
我是directx的新手,但令我惊讶的是,我看到世界矩阵和视图矩阵的大多数例子都是顶点着色器的一部分,而不是乘以CPU并将结果传递给着色器.
对于刚性对象,这意味着对于对象的每个单个顶点,将相同的两个矩阵相乘一次.我知道GPU可以在多个顶点上并行执行此操作(实际上并不知道有多少顶点),但这不是真的效率低下,还是我只是缺少某些东西?我还是新的,无能为力.
Ant*_*eru 5
通常,您希望在CPU上执行此操作.但是,DirectX 9具有" 预处理器 " 的概念,这意味着这种乘法将在CPU上预先完成.对于较新的API,这已被删除,但它可能与您正在查看的示例非常相关.
此外,与内存访问相比,现代GPU在ALU操作方面非常快.具有适度复杂的顶点着色器(可能具有纹理提取)意味着进行矩阵乘法所需的数学是免费的,因此作者可能甚至没有打扰过.
无论如何,最佳做法是在CPU上预先乘以一切.同样适用于将像素着色器中的工作移动到顶点着色器中(如果某个东西在三角形上是恒定的,则不要按像素计算它.)
归档时间:
14 年,4 月 前
查看次数:
828 次
最近记录:
14 年,3 月 前