Opengl 有人知道这个GLSL函数会产生什么坐标吗?

Opengl 有人知道这个GLSL函数会产生什么坐标吗?,opengl,graphics,glsl,Opengl,Graphics,Glsl,我正在尝试在WPF中使用像素着色器,我想尝试以下代码: -1.0 + 2.0 * gl_FragCoord.xy / resolution.xy 但我不确定这将产生什么样的价值范围。我将我的应用于图像作为过滤器,我可以访问u和v值[0-1]。当我这样做时: -1.0 + 2.0 * {U,V}; 我没有得到同样的结果。我知道上面的值也必须是一个标准值范围,但不确定是-1到1,还是0到1,等等 有什么想法吗? gl_FragCoord.xy/resolution.xy提供范围[0,1] 乘以2

我正在尝试在WPF中使用像素着色器,我想尝试以下代码:

-1.0 + 2.0 * gl_FragCoord.xy / resolution.xy
但我不确定这将产生什么样的价值范围。我将我的应用于图像作为过滤器,我可以访问u和v值[0-1]。当我这样做时:

-1.0 + 2.0 * {U,V};
我没有得到同样的结果。我知道上面的值也必须是一个标准值范围,但不确定是-1到1,还是0到1,等等

有什么想法吗?

  • gl_FragCoord.xy/resolution.xy
    提供范围[0,1]
  • 乘以2得到的范围为[0,2]
  • 减去1可以得到范围[-1,1]
例如:

像编译器一样通读这篇文章<代码>-1.0+2.0get被缩减为
1.0
。然后状态变为
1.0*glFragCoord.xy/resolution.xy
1*x=x
,如果这样,则等式变成
glFragCoord.xy/resolution.xy

实际上,最终的范围是[0,1/分辨率]


如果你所说的等式是
-1.0+(2.0*glFragCoord.xy/resolution.xy)
那么你有[0,2/分辨率],那么1变成[-1,(2/分辨率)-1]。

非常感谢,非常感谢。我基本上是在尝试这种效果,但不知何故,我在某些时间值的效果最终会部分或全部偏离屏幕(黑屏)。因此,基本上,几秒钟后图像就会离开屏幕。你知道他们是怎么做到的吗?所以它看起来总是围绕着图像的中心移动?这是一个像素一个像素的应用,我也是。这里是链接,径向模糊:没有研究效果机制:我猜这就是三角函数的作用。尝试在那里玩代码(并使用链接中的compile按钮重新编译),以了解正在发生的事情。BODMAS()也适用于编译器。而且gl_FragCoord的内容也各不相同。对于早期的Pixelshader版本,它通常是屏幕尺寸,如heroku示例或iquilezles示例。U、V坐标应在[0,1]范围内。如果将U与纹理宽度相乘,将V与纹理高度相乘,则会得到UV坐标所指向的像素位置。