我有一个片段着色器可以绘制一些东西。最重要的是,我希望它在片段周围绘制 1 像素厚的矩形。我使用了阶跃函数,但问题是 UV 坐标在 0.0 -1.0 之间。我如何知道片段何时位于特定像素?为此,我想在边缘上绘制。
c.r = 步骤(0.99, UV.x);
c.r += 步骤(0.99, 1.0-UV.x);
c.r += 步骤(0.99, UV.y);
c.r += 步骤(0.99, 1.0-UV.y);
上面的代码只是画了一个矩形,但问题的厚度是总宽度/高度的0.01%。 有没有关于 UX、FRAGCOORD、SCREEN_TEXTURE 和 SCREEN_UV 的详细描述?
最佳答案
如果您可以在屏幕坐标中工作(即,您想根据屏幕空间定义位置和厚度),则可以使用 FRAGCOORD
。它对应于视口(viewport)内的 (x, y)
像素坐标,即,默认视口(viewport)为 1024 x 600,左下角像素为 (0, 0),右上角像素为为 (1024, 600)。
如果您想将片段坐标映射回世界空间(即,您想根据世界空间定义位置和厚度),则必须遵循 work-around mentioned here .
关于fragment-shader - 在 Godot 片段着色器中绘制矩形时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689773/