fragment-shader - 在 Godot 片段着色器中绘制矩形时出现问题

标签 fragment-shader godot

我有一个片段着色器可以绘制一些东西。最重要的是,我希望它在片段周围绘制 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/

相关文章:

three.js - 如何在 Three.js 中使用着色器实现平滑过渡?

c++ - 如何使用顶点位置坐标进行纹理处理? OpenGL,C++

opengl - 使用 GLSL 着色器时聚光灯效果无法正常工作

vector - Godot 3d 获得前向矢量

keyboard-events - Godot 键盘事件

python - Pyglet 着色器不工作,不断出错

javascript - 片段着色器是否在屏幕外运行?

godot - 我如何检测运动学体 2d 和区域 2d 的碰撞

tile - 在 Godot 瓷砖 map 编辑器中选择非连续区域以创建图集

noise - 柏林噪声 gdscript 错误