如何在shadertoy.com中设置GLSL版本?

时间:2018-04-03 04:04:20

标签: glsl

我今天刚刚为shadertoy.com创建了一个帐户,而我是OpenGL的新手,只知道一些JavaScript和Processing。我试图在2个整数上使用按位xor,我得到如下错误:

  

'^':仅在GLSL ES 3.00及更高版本中支持逐位运算符。

我用Google搜索并找到了this。我在“图片”标签的顶部插入了#version 300 es。由于我的聪明,我得到了愉快的回报,并出现以下错误:

  

'version':#version指令必须先于其他任何内容,但注释和空格除外。

所以,我真正的问题是我应该在Shadertoy中放置#version指令吗?

Post Scriptum;我的实验是here

2 个答案:

答案 0 :(得分:2)

那是因为ShaderToy'可能'会为您插入版本。并且GLSL要求您将版本指令放在着色器字符串的开头。您必须考虑到它们的GLSL编辑器中的内容并不是提交给GLSL编译器的内容的全貌。他们在你看不到的引擎盖下添加更多信息,#version是你无法控制的隐藏事物之一。

此外,看起来ShaderToy不支持WebGL2或GLSL 300,DOES support XOR运算符。因此,您应该联系网站所有者,并在计划添加支持时询问他们。

答案 1 :(得分:2)

如果要使用XOR运算符,请尝试在Chrome或其他支持WebGL2的浏览器中打开相同的着色器。查看您的浏览器是否支持WebGL2 here