我的着色器中有一个模糊功能,它将浮动作为模糊半径。
我像这样计算屏幕中心的距离:
vec2 nPos = texCoord.xy - vec2(0.5, 0.5);
float d = sqrt(nPos.x * nPos.x + nPos.y * nPos.y)/sqrt2; //ranged from 0 to 1
现在我调用我的模糊功能:
gl_FragColor = chromaticBlur(pr, pg, pb, d, size);
奇怪的是,如果我将d设置为0,则没有模糊,正如预期的那样(0以上的值也按预期工作)。但是如果我使用上面显示的功能,屏幕的大部分(实际上是椭圆形)将是黑色的。这意味着该区域的模糊值为负,这应该是不可能的。怎么会发生这种情况?