【发布时间】:2012-05-13 04:43:18
【问题描述】:
GLSL 是否有任何用于 +/-infinity 或 NaN 的预定义常量?我这样做是一种解决方法,但我想知道是否有更清洁的方法:
// GLSL FRAGMENT SHADER
#version 410
<snip>
const float infinity = 1. / 0.;
void main ()
{
<snip>
}
我知道isinf 函数,但我需要将无穷大分配给一个变量,这样对我没有帮助。
【问题讨论】:
-
你需要无穷大做什么?
-
使用无穷大在我的代码中节省了很多逻辑:
<snip> float t0 = (d >= 0.) ? t : infinity; <snip> float t1 = (d >= 0.) ? t : infinity; t = min (t0, t1); <snip> -
我相信选择一个足够大的值(基于您的应用程序)应该很容易做到这一点。比如说
1e20 -
使用无穷大似乎工作正常,我只是想知道是否有一个预定义的常量。当我在这里时,是否有其他东西的常量,如 FLT_MAX FLT_EPSILON 等,就像 C 中的方式一样?