gpt4 book ai didi

glsl - 在 WebGL 中故意生成 NaN

转载 作者:行者123 更新时间:2023-12-02 18:11:57 25 4
gpt4 key购买 nike

我有一个 GLSL 着色器,当满足条件时,它应该输出 NaN。我实际上很难实现这一点。

基本上我想这样做:

float result = condition ? NaN : whatever;

但是 GLSL 似乎没有 NaN 常量,因此无法编译。 如何生成 NaN?

<小时/>

我尝试自己制作常量:

float NaN = 0.0/0.0; // doesn't work

这适用于我测试的一台机器,但不适用于另一台机器。它还会在编译着色器时引起警告。

鉴于明显的计算在我尝试过的一台机器上不起作用,我感觉正确地执行此操作非常棘手,并且需要了解有关各种类型 GPU 之间不一致的大量现实事实。

最佳答案

这里不要使用 NaN。

OpenGL ES 3.2 Spec 中的第 2.3.4.1 节指出

The special values Inf and −Inf encode values with magnitudes too large to be represented; the special value NaN encodes “Not A Number” values resulting from undefined arithmetic operations such as 0/0. Implementations are permitted, but not required, to support Inf's and NaN's in their floating-point computations.

所以这似乎真的取决于实现。您应该输出另一个值而不是 NaN

关于glsl - 在 WebGL 中故意生成 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37532640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com