10

我有许多 GLSL 片段着色器,我几乎可以保证它们符合#version 120它们使用标准的、非 ES 兼容的值,并且它们没有任何 ES 特定的编译指示。

我真的很想使用 WebGL 为他们制作一个网络预览器。预览器不会在移动设备上使用。这可行吗?与 GLSL 版本相比,WebGL 中暴露给 GLSL 着色器的功能集是否受到限制?有精度差异吗?

我已经尝试过使用,THREE.js但这并没有真正摩擦它,因为它在将着色器代码加载到 GPU 之前将其弄乱(我不能这样做)。

简而言之:GLSL 规范是否足以让我运行这些着色器?...因为如果它不是我所追求的,那是不可行的,我应该放弃它。

4

1 回答 1

10

不,WebGL 着色器必须是版本 #100。其他任何事情都是不允许的。

如果你很好奇为什么会这样,因为 WebGL 需要尽可能地在任何地方运行。如果您可以选择任何版本,您的网页将只能在具有处理该版本的 GPU/驱动程序的系统上运行。

WebGL 的下一个版本将提高版本号。它将允许 GLSL ES 3.0(注意ES)。截至 2016 年 5 月,它目前在 Chrome 和 Firefox 的标志后面可用

于 2014-01-14T02:46:27.547 回答