这是WebGL着色器中有限浮点精度的示例吗?

时间:2019-06-04 03:33:22

标签: floating-point glsl webgl shader

我在shadertoy上有一个example着色器,其行为与我预期的不同。它需要X和Y片段坐标,将它们加在一起,然后计算此表达式的ULP。期望ULP值非常小,因此我将其乘以很大的数字并将其输出为像素颜色。我希望有白色像素,但会变成黑色,表示该值实际上为零。这种错误是由于我的WebGL实施(适用于Windows的Google Chrome)中的精度限制引起的吗?

float ulp(float f)
{
    int i = floatBitsToInt(f);
    return abs(intBitsToFloat(i + 1) - f);
}

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    float f = fragCoord.y + fragCoord.x;
    vec3 col = vec3(ulp(f) * 3.4e38);
    fragColor = vec4(col, 1.0);
}

编辑:出于好奇,我在手机上加载了sharttoy示例,瞧瞧,我得到了一个白屏,就像我最初期望的那样。

0 个答案:

没有答案