【发布时间】:2015-05-11 12:44:12
【问题描述】:
我正在使用英特尔 AVX 内在函数实现粒子系统。当粒子的 Y 位置小于或等于零时,我想重置粒子。
粒子系统按如下 SOA 模式排序:
class ParticleSystem
{
private:
float* mXPosition;
float* mYPosition;
float* mZPosition;
.... Rest of code not important for this question
我最初想到的方法只是遍历 mYPosition 数组并检查开头所述的情况。也许使用这种方法可以提高一些性能?
然而,问题是是否有任何有效的方法来实现这一点 使用 AVX 内在函数?谢谢!
【问题讨论】:
-
如果其余代码比您的“检查
-
我不同意。如果您发布的代码与所提出的问题无关,它会被否决。初始化代码、顶点缓冲区映射和资源释放与本题无关。
-
“重置粒子”代码是什么样的?如果它也很简单,那么您也许可以提出一个矢量化无分支实现。
-
我不能说我理解这一点,但对于 avx lists.cs.uiuc.edu/pipermail/llvmbugs/2012-July/024072.html987654321@ 上的 signum 来说,它确实看起来很有趣
-
使用 AVX 执行此操作非常简单 - 了解 (a) 通常有多少粒子和 (b) 其中有多少可能具有 Y 位置