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