如何检查 glsl 中的值是否未定义?

问题描述

我有一个基本上充当高度图的顶点着色器,问题是有时当函数输出未定义时它不会向缓冲区写入任何内容。 (特别是在除以 0 的情况下或在 sqrt(-) 情况下)这会导致锯齿状边缘,因为某些三角形没有被渲染。有没有办法让我检查 glsl 中的空值或未定义值?

编辑:我只需要一些可以做的事情:f(x) == undefinedf(x) == null,其中 f(x)一个输出浮点数的函数

解决方法

浮点除以零不会产生“未定义”。它产生正无穷大或负无穷大 (INF),您可以使用 isinf() 函数检测 INF 值。

但是对于sqrt,您无能为力。 “未定义”不是一个值;意思是“任何事情都有可能发生”。

最好在进行计算之前清理输入,而不是之后。