5

我正在尝试在 Unity 中创建线框顶点/片段着色器。根据这篇论文似乎是可能的。一般的想法似乎是您将在顶点着色器中计算的距离向量传递给片段着色器中的每个片段,它可以使用它来确定根据线框线在多边形内的位置绘制线框线的亮度。

但是,从我读过的所有其他内容来看,您似乎只能访问顶点着色器中的单个顶点。对于 ecah 顶点,我需要访问多边形中的所有相邻顶点。该论文似乎暗示不需要几何着色器,这很好,因为 Unity 还不支持它们。

我错过了什么?是否永远不可能访问顶点着色器中的相邻顶点?如果没有几何着色器,我想做的事情是不可能的吗?

4

1 回答 1

2

您似乎确实过度阅读了 2.1 中的段落

步骤 G1 通常总是在顶点着色器中执行。步骤 G2 应该在几何着色器中执行,因为几何着色器可以访问多边形的所有顶点(假设它是一个三角形)。因此,如果不使用几何着色器,顶点着色器需要接收其他顶点作为属性来计算距离。这意味着应用程序代码对于是否使用线框方法不是不变的,需要传输额外的数据,最后,由于顶点的属性取决于绘制的三角形,因此排除了索引图元的使用。

因此,当不使用几何着色器时,您确实不知道三角形的其他顶点,因此必须将它们作为附加顶点属性传输。因此,对于三角形的每个顶点,您将获得两个额外的 vec3 属性,其中包含该三角形其他两个顶点的位置。当然,正如正文所说,您不能使用索引绘图,因为这两个属性不仅取决于顶点位置,还取决于该顶点所属的三角形。

于 2012-01-18T18:47:18.100 回答