作者:mobiledu2502935431 | 来源:互联网 | 2023-10-09 19:54
我正在编写一个计算着色器,它将在Unity中的每一帧上调用。
有一个很大的 RWStructuredBuffer 缓冲区,它将在每次计算中使用,但是在我使用它之前,自上一帧以来,RWStructuredBuffer 缓冲区中的某些元素可能已被修改。 。因此,在使用前必须先对其进行更新。我发现有两种可能的方法
-
将最新的整个RWStructuredBuffer 缓冲区设置为GPU。 (因为此缓冲区很大,所以效率不高)
-
设置 StructuredBuffer 更新,它仅包含 RWStructuredBuffer 缓冲区中自上一帧以来已被修改的元素。然后更新RWStructuredBuffer 缓冲区。 (问题是,当我们从计算着色器中的main()执行更新操作时,它会拆分为多个线程,并且每个线程都在执行重叠的更新操作,这会使它变得更慢。)
有什么办法可以解决这个问题?