我正在使用带有顶点着色器和片段着色器的GLSL 。
顶点着色器输出highp float
[0,1] 范围内的a
当它到达片段着色器时,我看到值(在三角形边缘)超过 1.1 不少!
如果我...
- 要么禁用 MSAA
- 或者使用 GLSL插值限定符
flat
禁用插值。
如果启用了 MSAA,钳位的 0 到 1 高精度浮点数如何以远大于 1 的值到达片段着色器?
顶点着色器代码:
out highp float lightcontrib2;
...
lightcontrib2 = clamp( irrad, 0.0, 1.0 );
片段着色器代码:
in highp float lightcontrib2;
...
if (lightcontrib2>1.1) { fragColor = vec4(1,0,1,1); return; }
果然,使用 MSAA 4x,这是 OpenGL 生成的图像。(观察窗口中心的磁彩色像素。)
我已经排除了非数字值。
GL_VERSION:3.2.0 英伟达 450.51.06