如何在片段着色器中找到 4 个顶点之间的插值位置?
Posted
技术标签:
【中文标题】如何在片段着色器中找到 4 个顶点之间的插值位置?【英文标题】:How can I find the interpolated position between 4 vertices in a fragment shader? 【发布时间】:2013-11-04 16:47:37 【问题描述】:我正在使用 SharpDX(C# 中的 DirectX11)创建一个着色器,该着色器从 顶点着色器的输出中获取 segment(2 个点) em> 然后将它们传递给一个几何着色器,它将这个线条转换成一个矩形(4个点)并为四个角分配一个纹理坐标。
之后我想要一个 Fragment Shader(它接收插值位置和插值纹理坐标)检查“矩形的脊椎”处的深度(即,在通过的行中)穿过矩形的中间。
问题是我不知道如何提取矩形脊椎处对应片段的位置。发生这种情况是因为我插入了纹理坐标,但我不知道如何使用它们来获取我想要的片段,因为 a) 纹理的坐标系和 b) 我的片段在屏幕空间中的位置不是一样。
非常感谢您的帮助。
【问题讨论】:
如果您发布着色器的 HLSL 代码,我可能会提供更好的帮助,但如果没有代码,我将无能为力。此外,作为一个挑剔,在 DirectX 中,片段着色器称为像素着色器。 【参考方案1】:我认为不可能在矩形的脊椎处提取相应片段的位置。但是对于每个片段,你都有插值位置(所有,你需要得到它是将它传输到片段着色器,它将为每个片段进行插值)和纹理坐标。为什么你不能使用它?为什么需要准确地找到片段坐标?
此外,您可以在几何着色器中生成一些额外的数据来做您想做的事情。
【讨论】:
以上是关于如何在片段着色器中找到 4 个顶点之间的插值位置?的主要内容,如果未能解决你的问题,请参考以下文章