GLSL无限定(glsl infinity constant)

GLSL是否有+/-无穷大或NaN任何预先定义的常量? 我做这个作为一种解决办法,但我不知道是否有一个更清洁的方式:

// GLSL FRAGMENT SHADER
#version 410

<snip>

const float infinity = 1. / 0.;

void main ()
{
    <snip>
}

我知道的isinf功能,但我需要分配无限远到变量,这样并不能帮助我。

Answer 1:

尼科尔提到的,有没有预先定义的常量。

然而,来自于OpenGL 4.1,您的解决方案至少保证工作和正确地产生无限的价值。

见例如在GLSL 4.4

4.7.1范围及精度

...

然而, 将一个非零的由0个结果在适当签署IEEE Inf文件 :如果正和负零实现,则正确签名Inf文件将被生成时,生成正否则Inf文件。

请注意,当你使用OpenGL的旧版本,但:

例如,在GLSL 4.0 ,它说:

4.1.4花车

...

类似地,处理的由0条件如分可能会导致未指定的结果 ,但在任何情况下,应该这样的条件导致中断或处理的终止。



Answer 2:

有没有它预先定义的常量,但该isinf功能测试,如果事情是无穷大。

而我在这,有没有常数像FLT_MAX FLT_EPSILON其他的事情等方式存在在C?

不是,没有。



标签