【发布时间】:2021-01-01 17:10:44
【问题描述】:
我将GLSL 与顶点着色器和片段着色器一起使用。
顶点着色器在[0,1]范围内输出highp float
当它到达片段着色器时,我看到值(在三角形边缘)超过 1.1 不少!
如果我...,这个问题就会消失。
- 要么禁用 MSAA
- 或使用 GLSL interpolation qualifier
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 NVIDIA 450.51.06
【问题讨论】:
标签: glsl interpolation msaa