随着DirectX和OpenGL的计算着色器的可用性,现在可以实现许多算法而无需经过光栅化管道,而是可以在GPU上使用通用计算来解决该问题。
对于某些算法,这似乎已成为直观的规范解决方案,因为它们本质上不是基于栅格化的,而基于栅格化的着色器似乎是利用GPU功率的一种解决方法(简单的示例:创建噪声纹理。此处无需对四边形进行栅格化)。
给定一种可以双向实现的算法,与使用计算着色器相比,使用常规着色器是否有一般(潜在)的性能优势?我们是否应该注意一些缺点(例如,在运行时从计算着色器切换到计算着色器是否存在某种异常的开销)?
在两者之间进行选择时,也许还会考虑其他优点或缺点吗?
如果效果标记确实相关,那么请考虑观看Marco Fratarcangeli的Game Engine Gems“服装模拟”文章中的这段视频:youtube.com/watch ? v=anNClcux4JQ 。您可以阅读评论并发现一个尴尬的事情:基于GLSL /着色器的实现比使用CUDA或OpenCL更快(后者是由于当时驱动程序支持差,在2010年)。有一些低级的差异..有所作为。
—
teodron
@teodron我没有可用的GPU Gems,也找不到源代码。作者实际上是使用GLSL顶点+像素着色器还是使用GLSL计算着色器?
—
TravisG
是! 在CUDA之前,社区就是这样实现GPGPU功能的。以下是指向OpenCloth的链接,以了解如何使用纯GLSL或Cuda可以做到这一点:code.google.com/p/opencloth/source/browse/trunk/…–
—
teodron