我有一个顶点着色器,它本质上充当高度贴图,问题是当函数的输出未定义时,有时它不会向缓冲区写入任何内容。(特别是在被0除的情况下或在sqrt(-(的情况下(这会导致锯齿状边缘,因为一些三角形没有渲染。有没有一种方法可以让我检查glsl中的null或未定义值?
EDIT:我只需要一些可以做的事情:f(x) == undefined
或f(x) == null
,其中f(x)
是一个输出浮点值的函数。
浮点除以零不会产生"未定义";。它产生正无穷大或负无穷大(INF(,您可以使用isinf()
函数检测INF值。
但对于sqrt
,你无能为力;未定义的";不是一个值;它的意思是";任何事情都可能发生";。
最好在执行计算之前而不是之后对输入进行清理。