gpt4 book ai didi

unity3d - DirectCompute 原子计数器

转载 作者:行者123 更新时间:2023-12-04 11:51:00 25 4
gpt4 key购买 nike

在计算着色器(使用 Unity)中,我有一个光线转换寻找与网格三角形的交点。在某些时候,我想返回找到了多少个交叉点。

我可以通过标记像素清楚地看到有多少个交叉点,但是如果我只是为计算着色器中的每个交叉点增加一个全局 int(并通过缓冲区返回),我得到的数字就没有意义。我认为这是因为我正在创造一个竞争条件。

我看到 opengl 有“原子计数器”:https://www.opengl.org/wiki/Atomic_Counter ,这似乎是我在这种情况下需要的。我在 Unity 和 DirectCompute 文档中都没有找到这样的功能。有没有好的方法可以做到这一点?

我可以创建一个 appendBuffer,但这似乎很愚蠢,因为我实际上只需要返回一个 int。

最佳答案

哈!那很简单。我会把这个留在这里以防万一有人遇到同样的问题。
HLSL 有一整套“互锁”功能可以防止此类事情发生:

https://msdn.microsoft.com/en-us/library/windows/desktop/ff476334(v=vs.85).aspx

就我而言,它是:

InterlockedAdd(collisionCount, 1);

取代
collisionCount++;

就是这样!

关于unity3d - DirectCompute 原子计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638762/

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