什么着色器来计算关于基元的东西?
What shader to compute something about a primitive?
我想获取我的基元的所有顶点(特别是 GL_LINE
的 2 个顶点),并用它们计算一些东西以供片段着色器使用(特别是线方程 ax + by + c = 0
).
由于我在顶点着色器中看不到图元的其他顶点,是否有最适合计算此类信息的着色器阶段?
我不想在CPU中做,因为我想要转换和投影后的信息。我可以在曲面细分着色器或几何着色器之一中执行此操作,并将输出作为平面变化传递给片段着色器吗?在这种情况下,将输出相同的原语,不变。
可能吗?这是个好主意吗?
大多数着色器阶段都有一个描述其实际作用的名称。 "vertex shader" 将一个顶点作为输入并生成一个顶点作为输出。 "fragment shader" 将 fragment 作为输入并生成一个片段作为输出。 A"tessellation evaluation shader"有点倾斜,但它确实评估了固定功能镶嵌单元执行的镶嵌操作。
"Geometry shader" 是奇数。它以一个图元作为输入并产生零个或多个图元作为输出。按理说,它应该被称为 "primitive shader",但该名称归咎于 Microsoft。
如果您要计算片段样本位置与生成该片段的直线的 window-space 距离,则可以使用几何着色器。
我想获取我的基元的所有顶点(特别是 GL_LINE
的 2 个顶点),并用它们计算一些东西以供片段着色器使用(特别是线方程 ax + by + c = 0
).
由于我在顶点着色器中看不到图元的其他顶点,是否有最适合计算此类信息的着色器阶段?
我不想在CPU中做,因为我想要转换和投影后的信息。我可以在曲面细分着色器或几何着色器之一中执行此操作,并将输出作为平面变化传递给片段着色器吗?在这种情况下,将输出相同的原语,不变。
可能吗?这是个好主意吗?
大多数着色器阶段都有一个描述其实际作用的名称。 "vertex shader" 将一个顶点作为输入并生成一个顶点作为输出。 "fragment shader" 将 fragment 作为输入并生成一个片段作为输出。 A"tessellation evaluation shader"有点倾斜,但它确实评估了固定功能镶嵌单元执行的镶嵌操作。
"Geometry shader" 是奇数。它以一个图元作为输入并产生零个或多个图元作为输出。按理说,它应该被称为 "primitive shader",但该名称归咎于 Microsoft。
如果您要计算片段样本位置与生成该片段的直线的 window-space 距离,则可以使用几何着色器。