首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通用3D操作CPU或GPU上的矩阵数学

通用3D操作CPU或GPU上的矩阵数学
EN

Stack Overflow用户
提问于 2016-03-07 10:10:04
回答 1查看 1.3K关注 0票数 1

对于在CPU上和GPU上进行多少矩阵运算,对于普通的3D操作,有什么共同的智慧吗?

一个典型的3D着色器可能需要几个矩阵。计算表面到光的世界矩阵。用于正常计算的世界逆转置矩阵。一种用于三维投影的世界观投影矩阵。等。

有两种基本的方法来解决这个问题。

  1. 计算CPU上的矩阵并将计算的矩阵上传到GPU 在某些CPU语言中 worldViewProjection = world * view * worldInverseTranspose =transpose(反向(World));将world,worldViewProjection,worldInverseProjection上传到GPU 在GPU上,在需要的地方使用world,worldViewProjection,worldInverseProjection
  2. 将各种组件矩阵传递给GPU (world,view,投影),并在GPU上计算所需的矩阵。 在某些CPU语言中 将世界、视图、投影上传到GPU GPU worldViewProjection =世界*视图*投影worldInverseTranspose =转置(逆(世界));

我明白,在某种程度上,我可能只需要在不同的机器和GPU上进行配置,而在一次绘制调用中绘制一百万个顶点可能比在一次绘制调用中绘制4个顶点有不同的需求,但是.我在想..。

对于什么时候在GPU和CPU上做矩阵计算,有什么共同的智慧吗?

另一种问这个问题的方法是,我的缺省值应该是上面的#1或#2,之后我可以分析那些默认不是最佳性能的情况。

EN

回答 1

Stack Overflow用户

发布于 2016-03-07 23:01:13

在决定CPU / GPU计算时,问题不是计算,而是

GPU的计算非常便宜。由于您的计算world * view * projection涉及制服,这很可能是最优的。

但是,如果您选择在GPU上计算,那么world viewprojection必须作为单独的统一矩阵流。这需要更多的时间比流一个矩阵,也消耗了更多的统一组件在您的着色器。

请注意,与纹理数据或缓冲区数据相比,制服的流时间很小。您不太可能达到性能限制,因为它,如果你这样做,这是很容易优化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35840929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档