1

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

-1.0 + 2.0 * gl_FragCoord.xy / resolution.xy

但我不确定会产生什么范围的值。我将我的图像作为过滤器应用到图像中,并且可以访问 u 和 v 值 [0-1]。当我这样做时:

-1.0 + 2.0 * {U,V};

我没有得到相同的结果。我知道上面也必须是一个标准化的值范围,但不确定是 -1 到 1,还是 0 到 1,等等。

有任何想法吗?

4

2 回答 2

2
  • gl_FragCoord.xy / resolution.xy为您提供范围 [0,1]。
  • 乘以 2 得到范围 [0,2]。
  • 减 1 得到范围 [-1,1]

示例: http: //glsl.heroku.com/e#7712.0

于 2013-03-23T02:29:02.287 回答
0

像编译器一样阅读它。-1.0 + 2.0得到减少到1.0。然后语句变为1.0 * glFragCoord.xy / resolution.xy1 * x = x,鉴于此,等式变为glFragCoord.xy / resolution.xy

实际上,您最终会得到 [0, 1/resolution] 的范围。

如果您的意思是等式,-1.0 + (2.0 * glFragCoord.xy / resolution.xy)那么您有 [0, 2/resolution],减法 1 变为 [-1, (2/resolution)-1]。

于 2013-03-23T02:32:49.400 回答