统一从后台线程调度ComputeShaders

问题描述 投票:0回答:1

我有一个运行后台线程的 Unity 项目,该线程利用计算着色器来处理图像。 我无法从后台线程 Dispatch() 这个着色器,因为 Unity 仅在主线程上支持它们。因此,我将其存储在某个队列中,并在组件的下一个 Update() 调用中处理它。 但是,这意味着后台线程必须等待下一帧出现才能拾取该帧。 如果我的目标帧速率很低(比如 15hz),这可能太长,我需要这个着色器来运行now

执行此操作的正确方法是什么?有没有办法直接从后台线程调度这些?有没有办法以某种方式强制主线程立即执行此操作?

我认为“图形作业”就是为了这个目的,但它要么不起作用,要么我启用它错误。

任何帮助将不胜感激!

multithreading unity-game-engine gpu compute-shader
1个回答
0
投票

无法从后台着色器调度或使用计算着色器和计算缓冲区。问题是它们类似于统一组件,无法从非主线程进行编辑。

© www.soinside.com 2019 - 2024. All rights reserved.