5

我整天都在做这件事,并开始放弃它。我找不到很多关于计算机着色器的信息。最佳来源是“使用 Direct3D 11 进行实用渲染和计算”,不幸的是它并没有太多帮助。它帮助我理解了一些理论,但我仍然不知道如何实现任何东西。

我正在研究类似于那本书中创建的粒子系统的东西。除了我的粒子系统基本上只有在 3d 网格中显示的粒子(不像重力/力/等等)。这是出于教育目的,如果我得到这个工作,我将能够计算出我假设的其余部分。

我不明白的是计算着色器如何适应管道。我想我明白我需要做什么,但我不知道我应该如何让它工作。

我需要以某种方式为计算着色器播种一个填充了所有粒子位置的缓冲区。(比如说,一个 1024x1024x1 的缓冲区)。然后我需要这个计算着色器将每个位置作为顶点输出到我的顶点着色器,之后管道的其余部分是标准的(顶点着色器进行所有转换,我的几何着色器将顶点扩展为四边形,我的像素着色器渲染它)。

我什至不知道这是否正确,但听起来是正确的。即使是这样,我也不知道我将如何去做。如何将计算着色器的输出提供给顶点着色器?我最初将如何为计算着色器播种?如何确保计算着色器不会丢弃粒子缓冲区?(否则,我必须每次都提供粒子,这将破坏(最终)使用粒子四处移动的粒子系统等的目的,因为我必须在 CPU 上完成所有这些工作)

有很多未知数,感觉就像我应该知道这一切,甚至开始编写这些着色器。我找不到任何垫脚石。

4

1 回答 1

3

计算着色器不是图形管道的一部分。它是一个简单的 GPGPU 工具,因此您可以以更简单的方式将图形设备的计算能力用于非渲染目的,如粒子运动。如果要将其用于粒子系统,则应首先使用计算着色器计算粒子位置。然后将普通代码中的输出填充到顶点缓冲区中进行渲染。AFAIK 没有直接的方法将输出传输到渲染管道,但我对计算着色器不太熟悉。对您来说有趣的链接可能是那里的文档示例。图形管道显示在此页面上

于 2012-11-23T10:47:40.760 回答