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

And*_*Jay 16 opengl 3d graphic

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

joz*_*yqk 20

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

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

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

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

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

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

也可以看看: