因此,我最近才了解到Compute Shader,从我得到的与并行编程相同的想法来看,它看起来与CUDA或OpenCL相同,但是在着色器管道中。如果我要使用一种方法替代另一种方法或同时使用这两种方法,则在一个场景中绘制一百万个多维数据集。如果两者都拆分,那么GPU不会尝试同时并行计算着色器和另一个进程

评论

为什么要使用GPGPU首先绘制数百万个多维数据集?

计算着色器用于计算工作负载,而不用于渲染。经验法则是,如果需要栅格化(即将三角几何体处理为像素),则应使用渲染管线;如果仅需要处理大量数据,则应使用计算。我也对支持和反对计算着色器和CUDA / OpenCL(带有图形API互操作)的声音参数感兴趣。我听说过的一种方法是使用特定于计算的API对计算工作负载进行更好的排队,但我想了解更多信息(即,异步计算如何进入画面)。

@Derag只是想尽可能快地喂我的恋物癖

如果要绘制一百万个立方体,请使用ray-marching :)

#1 楼

今天,将计算着色器视为“在着色器管道中”并不完全正确,就好像您的顶点着色器和片段着色器确实连接到管道中一样。目前,计算着色器还没有“钩住”任何东西,无法驱动光栅化,或直接消耗光栅化的输出。

但是,它允许您做的是消耗和产生内存资源,这些内存资源也被绘图调用以相对有效的方式使用。 OpenCL使这变得相当困难(例如,请参阅https://software.intel.com/zh-cn/articles/opencl-and-opengl-interoperability-tutorial)。这使您可以有效地将计算过程集成到渲染器中,但未集成到渲染管道中。