是否可以在顶点着色器中访问多边形中的所有顶点?

aar*_*rkk 5 shader cg unity-game-engine vertex-shader fragment-shader

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

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

我错过了什么?是否永远不可能访问顶点着色器中的相邻顶点?没有几何着色器,我正在尝试做什么?

Chr*_*ica 3

你似乎确实已经读过了 2.1 中的段落:

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

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