计算DX11中的着色器基础知识

Compute Shader basics in dx11

本文关键字:基础知识 DX11 计算      更新时间:2023-10-16

我即将在我的代码库中添加计算着色器支持,并遇到问题,找到一些非常基本问题的答案:

  1. 所有的文档都说Compute Dipeline均独立于GPU运行,但是所有DX11示例代码都使用设备上下文接口来设置着色器本身,资源视图并调用dispatch()方法,所以这些使用其余的渲染命令在命令缓冲区中排队或独立执行?

  2. 跟进问题1,我可以从多个线程调用计算着色器,还是我需要缓冲所有计算着色器命令并在线程上发布它们,该线程是在?

    <</p> <</p>
  3. 同步。大多数文章都使用CopyResource命令,该命令将自动同步计算着色器完成并使CPU访问结果,但似乎也可以阻止GPU。是否有一种更有效的方法来同步?

我知道我可以通过实验找到答案,但是为我节省时间的任何帮助都将不胜感激。

  1. Compute着色器管道独立于渲染管道,即顶点着色器,像素着色器,混合状态等,对调用Dispatch()时会发生什么。但是,它们确实进入了同一队列,因此保留了DrawDispatch的呼叫之间的订购。

  2. 必须从单个线程中完成对即时上下文的所有调用。

  3. 一种常见的方法是使用两个缓冲区。当一个通过计算着色器进行操作时,另一个是由CPU复制并阅读的。大多数GPU将能够并行化。