float变量不以任何方式进行比较

nur*_*gan 2 opengl floating-point glsl

我在glsl片段着色器中做了一些东西,得到了一些奇怪的结果.我用于计算的代码现在应该并不真正相关,但对于某种"调试",我会根据变量所在的范围显示颜色.

编码为:(阴影是一个浮点数)

if(shadow == 0.0f)
{
    vFragColor = vec4(1.0f, 0.0f, 0.0f, 0.0f);
}
else if(shadow == 1.0f)
{
    vFragColor = vec4(0.0f, 1.0f, 0.0f, 0.0f);
}
else if(shadow < 1.0f && shadow > 0.0f)
{
    vFragColor = vec4(0.0f, 0.0f, 1.0f, 0.0f);
}
else if(shadow < 0.0f)
{
    vFragColor = vec4(1.0f, 0.0f, 1.0f, 0.0f);
}
else if(shadow > 1.0f)
{
    vFragColor = vec4(0.0f, 1.0f, 1.0f, 0.0f);
}
else
{
    vFragColor = vec4(1.0f, 1.0f, 1.0f, 0.0f);
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,不应该在最后输入"else",因为代码在检查任何可能的值之前.但是,对于我得到一些奇怪结果的区域,我想做那种"调试",代码进入"else"语句.

有谁知道这会怎么样?我根本不明白这一点......

dat*_*olf 6

浮点数也可以是"非数字"