gpt4 book ai didi

performance - 点积与直接矢量分量在着色器中的总和性能

转载 作者:行者123 更新时间:2023-12-03 20:27:36 26 4
gpt4 key购买 nike

我正在为基于 Unity 的游戏编写 CG 着色器,用于高级照明计算。有时需要对所有向量分量求和。有两种方法可以做到:

  • 只需写一些类似的东西:
    float 总和 = v.x + v.y + v.z;
  • 或者做类似的事情:
    float 总和 = dot(v,float3(1,1,1));

  • 我真的很好奇什么更快,代码风格看起来更好。

    很明显,如果我们对 CPU 计算有同样的问题,第一种简单的方法要好得多。因为:

    a) 不需要分配另一个 float(1,1,1) 向量

    b) 不需要将每个原始向量“v”分量乘以 1。

    但是由于我们是在 GPU 上运行的着色器代码中进行的,我相信对于点积函数有一些很好的硬件优化,并且可能是 float3(1,1,1) 的分配将被转换为根本没有分配。
    float4 _someVector;

    void surf (Input IN, inout SurfaceOutputStandard o){
    float sum = _someVector.x + _someVector.y + _someVector.z + _someVector.w;
    // VS
    float sum2 = dot(_someVector, float4(1,1,1,1));
    }

    最佳答案

    cg中点积的实现:https://developer.download.nvidia.com/cg/dot.html
    恕我直言,差异是无法估量的,在 98% 的情况下,但第一个应该更快,因为乘法是一种“更昂贵”的操作

    关于performance - 点积与直接矢量分量在着色器中的总和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57804355/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com