vec2 部门行为怪异(自动纵横比校正?)

vec2 division acting weirdly (automatic aspect-ratio correction?)

运行 使用 OpenGL ES 和 WebGL 的 vec2 划分的一些问题 --- 特别是它似乎自动处理宽高比。我的理解是:

someVec2 / anotherVec2 = vec2(
  someVec2.x / anotherVec2.x,
  someVec2.y / anotherVec2.y)

即,它是组件方面的。

但是,此代码(其中 uResolution 是从当前分辨率的代码传递的 ivec2):

vec2 uv = gl_FragCoord.xy / float(uResolution);
gl_FragColor = vec4(uv.x, uv.y, 0.0, 1.0);

产生:

vec2 fragCoordUv = vec2(
  gl_FragCoord.x / float(uResolution.x),
  gl_FragCoord.y / float(uResolution.y)
);
gl_FragColor = vec4(uv.x, uv.y, 0.0, 1.0);

产生:

具体来说,Y 值似乎并没有一路上升。如果您使用纹理,问题会变得更加明显。即直接除法:

对比手动组件划分:

看起来它正在自动执行宽高比校正。这是一个功能吗?我似乎无法在任何地方找到有关它的任何信息。一切都表明普通的二元运算符(+、-、/、* 等)只是基于组件工作。请帮忙!

试试

vec2 uv = gl_FragCoord.xy / vec2(uResolution);