我正在尝试在基于体素的网格上实现环境遮挡,并在面部边缘获取这些闪烁的白色像素:
这是我的片段着色器:
#version 120
varying vec4 color;
varying vec4 normal;
void main(void)
{
float light = normal.w + max(0.15*dot(normal.xyz, vec3(1,1,1)), 0.0);
gl_FragColor = vec4(color.xyz * light, 1.0);
}
light
如果我从中删除,gl_FragColor
vec4
那么工件就会消失。该light
值是根据环境光遮挡值 ( normal.w
) 和镜面反射分量计算得出的。似乎是导致问题的镜面反射。为什么角落和边缘会突然像这样闪烁?当网格旋转时,白色像素会闪烁。但在较大的表面上,镜面高光看起来很正常,并跟随光源而不是闪烁。