我有一个大型 2D 三角形(不是三角形带)网格,包含大约 2+ 百万个多边形。其中许多多边形是多余的,可以使用顶点着色器中的属性变量之一来确定。但由于在顶点着色器中丢弃顶点是不可能的。我正在探索在几何着色器中丢弃基元作为优化的想法。保证该图元的所有三个顶点都具有相同的属性值。
我有一些疑问
- 这真的会在速度和 GPU 内存方面优化渲染吗?
- 这在几何着色器中是否可行?几何着色器是否适合于此?
最佳答案
But since discarding a vertex in vertex shader is not possible.
废话。哦,当然,VS 不能“丢弃”三角形,但这并不意味着它没有力量。
完全在屏幕外出现的三角形通常只会进行最少的处理。所以至少,你可以让VS调整最终的gl_Position
根据相关属性是否具有您正在查找的属性,该值将在屏幕外显示。
如果您可以访问 OpenGL 4.6,您可以通过 employing cull planes 获得更多乐趣,这使得VS可以更直接地剔除三角形。
Will this really optimize rendering in terms of speed and GPU memory?
从广义上讲,您永远不应该假设几何着色器会提高您应用它的任何算法的性能。在某些情况下,GS 可以用于优化算法,但缺乏实际性能数据,您应该从假设开始,即使用它只会使性能变得更糟。
关于opengl - 在 OpenGL 中使用几何着色器修剪基元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301328/