我如何find片段着色器中4个顶点之间的位置?

我使用SharpDX(C#中的DirectX11)创建了一个着色器,该着色器从顶点着色器的输出中获取一个片段(2个点),然后将它们传递给一个几何着色器,该着色器将该线条转换为一个矩形(4个点)四角有纹理坐标。

之后,我想要一个片段着色器(它接收插入的位置和插值的纹理坐标),检查“矩形的脊柱”的深度(即,在通过矩形中间的线)。

问题是我不知道如何提取在矩形的脊柱相应片段的位置。 发生这种情况是因为我有纹理坐标插值,但我不知道如何使用它们来获得我想要的片段,因为a)纹理的坐标系和b)我的片段在屏幕空间中的位置不是相同。

一种方法是从几何着色器创建另一个输出,例如称为spinePos 。 在几何着色器中,计算矩形每个末端的脊柱位置,并将其分配给spinePos以获得该末端的两个顶点。

栅格化器将像通常那样在像素之间插值该值,但是由于每个端点处的两个顶点具有相同的spinePos值,所以在矩形的厚度上插值的值将不会发生变化。 它只会随着您沿矩形的长度移动而改变。