曲面细分着色器剔除看不见的顶点?

时间:2012-10-18 05:02:10

标签: opengl tessellation

我注意到在我的程序中,当我远离我的细分网格时,帧时间逐渐减少,这表明在屏幕上没有的网格上没有进行细分。 (我没有自定义剔除代码)

但是出于我的目的,我需要在几何着色器中访问曲面细分的顶点,无论它们是否在屏幕上。

这些细分三角形是否会进入几何着色器阶段?或者他们甚至在进入曲面细分评估阶段之前就被淘汰了。

1 个答案:

答案 0 :(得分:0)

  

当我离开我的细分网格时,帧时间会下降,表明屏幕上没有网格物体没有发生细分。

那是你的问题;相信更快的速度意味着缺乏曲面细分。

许多原因导致屏幕外多边形比屏幕上的多边形更快。例如,您可以在速度方面部分或全部使用片段着色器和/或像素绑定。因此,一旦这些片段完全在屏幕外被剔除,您的渲染时间就会缩短。

简而言之,一切都很好。 OpenGL和D3D都不允许曲面细分阶段任意丢弃几何体。请记住:您不必在剪辑空间中进行细分,因此系统无法知道三角形是否在“屏幕外”。您的GS可能会在屏幕上显示屏幕外三角形。因此,在这一点上没有足够的信息来决定什么是屏幕外的。

很可能,发生的事情是渲染器的性能与光栅化器/片段着色器绑定,而不是顶点处理。因此,即使顶点仍在处理中,由于三角形在屏幕外,因此不会进行昂贵的每片段操作。因此,性能提高。