【问题标题】:More vertex data or more expensive shader?更多顶点数据还是更昂贵的着色器?
【发布时间】:2015-10-11 23:46:49
【问题描述】:

我可以:

将顶点上传到缓冲区并执行一些额外的指令,没有什么非常昂贵的,几个 vec4 创建、添加和单个 vec4 x mat4 乘法。

将顶点数量的三倍上传到缓冲区,并且不需要额外的数学运算。

在这两种情况下,相同数量的顶点被发送到着色器。只是缓冲区大小会有所不同,因为第一种方法使用了索引/实例化技巧。

显然第一种情况对于缓冲区上传来说更快,但是绘图呢?在大多数机器上可能会更快?

虽然我使用的是 opengl,但这个问题也适用于 directx。

【问题讨论】:

    标签: opengl graphics directx gpu


    【解决方案1】:

    根据您提供的信息,我认为没有好的答案。这至少取决于以下几点:

    • 顶点数和其他数据(如果您受 CPU-GPU 带宽限制)
    • 您已经在顶点着色器中完成的工作量(如果 GPU 受顶点处理限制)
    • 像素着色器的工作量(如果 GPU 受像素处理限制)
    • 顶点着色器中的控制流(如果您需要做的额外工作需要动态分支或其他昂贵的东西)

    通常我认为渲染很少会在顶点着色器中绑定 ALU,因此进行计算可能没问题,但没有分析就无法知道。尝试两者并测量 GPU 时间(例如,使用 Nvidia NSight 或 AMD PerfStudio)以获得实际答案。还记得在对渲染管道进行其他更改后重复分析,因为上述因素可能导致瓶颈转移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 2013-07-13
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多