从 WebGL 抛出异常

Throw an exception from WebGL

有没有办法从 WebGL 着色器中抛出 运行 次异常?由于着色器是用不支持异常的 C 语言编写的,我想这并不容易。

我插入了除以零的错误,但这些错误在 'constant folding' 期间被标记为警告,但我认为这不会发生在 运行 时间。

关于如何停止对无效 运行 时间值执行的任何巧妙想法?理想情况下,以指示错误发生在哪一行的方式....

上下文是我在允许无穷大但不允许某些操作(例如 0/0)的扩展复平面上进行数学运算。

这是不可能的,不使用 WebGL 或任何其他 图形 API。 就着色器而言,没有 "runtime errors" 这样的东西,只有 "undefined" 行为。

进行运行时反馈的唯一方法是将验证颜色编码到后台缓冲区或纹理中,假设您在片段着色器中进行数学运算。否则你就不走运了,你可能想看看实际上为 GPGPU 制作的 APIs,即 OpenCL 和 Cuda。