曲面细分着色器和几何着色器之间的差异

时间:2014-08-29 14:12:55

标签: opengl 3d graphic

我正在尝试高度理解图形管道。对我来说没有多大意义的一件事是为什么Geometry着色器存在。 Tessellation和Geometry着色器似乎对我做同样的事情。有人可以向我解释几何着色器与曲面细分着色器有什么不同吗?

1 个答案:

答案 0 :(得分:19)

曲面细分着色器用于变量细分。一个重要的部分是邻接信息,因此您可以正确地进行平滑处理,而不是填补空白。您可以使用几何着色器进行一些有限的细分,但这并不是它的用途。

几何着色器按原语运行。例如,如果您需要为每个三角形(例如this)执行操作,请在几何着色器中执行此操作。我听说阴影量挤出正在进行中。还有“保守的光栅化”,你可以扩展三角形边框,这样每个相交的像素都会得到一个片段。示例非常适用于特定应用程序。

是的,它们还可以生成比输入更多的几何图形,但它们可以很好地扩展。如果您想绘制粒子并将点转换为非常简单的几何体,它们的效果很好。我也使用几何着色器多次实现了行进立方体。通过变换反馈可以很好地保存生成的网格。

变换反馈也与几何着色器一起使用,以执行更多计算操作。一个特别有用的机制是它确实为您进行流压缩(紧密包装其不同数量的输出,以便在结果数组中没有间隙)。

几何着色器提供的另一个非常重要的事情是路由到分层渲染目标(纹理数组,立方体的面,多个视口),这必须按照原语进行。例如,您可以通过将几何体复制和投影6次到每个立方体的面来为单个通道渲染点光源的立方体阴影贴图。

不完全是一个完整的答案,但希望能给出差异的要点。

另见:

相关问题