glsl sqrt结果为阴性

glsl sqrt结果为阴性,glsl,sqrt,Glsl,Sqrt,我的着色器中有一个模糊函数,它将浮点作为模糊半径 我这样计算距屏幕中心的距离: 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 现在我这样调用模糊函数: vec2 nPos = texCoord.xy - vec2(0.5, 0.5); float d = sqrt(nPos.x * nPos.x + n

我的着色器中有一个模糊函数,它将浮点作为模糊半径

我这样计算距屏幕中心的距离:

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
现在我这样调用模糊函数:

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=彩色模糊(pr、pg、pb、d、size)


奇怪的是,如果我将d设置为0,就不会出现模糊,正如预期的那样(0以上的值也会按预期工作)。但是如果我使用上面显示的功能,屏幕的很大一部分(实际上是椭圆形)将是黑色的。这意味着该区域的模糊值为负值,这是不可能的。这是怎么发生的?

您能打开着色器进行测试吗?然后把你的链接贴在这里。它不会在那里编译。我似乎也看不到错误消息。此外,它还需要一个可见的纹理。不过,我刚刚发现,由于某些原因,我的模糊度在0到0.6之间失败。屏幕变黑的大部分也可能是NaN;也许是从一个被零除或是一个负数的sqrt?