第一次海报...
我一直在寻找threejs / shadertoy的东西,但是还没有找到这个特定的问题。我希望有人能提供帮助。


我试图将这个shadertoy:https://www.shadertoy.com/view/ltfXWr#带入一个简单的html文件中,并使用threejs显示它。我遵循以下基本思路:How to implement a ShaderToy shader in three.js?

并在片段着色器的顶部添加了一些制服,以弥补Shadertoy所使用的独特功能(iResolution,iMouse等)。除此以外,我还没有调整任何从shadertoy源代码中看到的代码。

运行代码时,出现以下错误:

THREE.WebGLProgram: shader error:  0 gl.VALIDATE_STATUS false gl.getProgramInfoLog invalid shaders  ERROR: 0:168: 'GL_OES_standard_derivatives' : extension is disabled<br>
ERROR: 0:188: 'xy' :  field selection requires structure, vector, or matrix on left hand side <br>
ERROR: 0:188: 'y' :  field selection requires structure, vector, or matrix on left hand side <br>
ERROR: 0:188: 'res' : redefinition <br>
ERROR: 0:189: 'y' :  field selection requires structure, vector, or matrix on left hand side <br>
ERROR: 0:189: 'uv' : redefinition <br>
ERROR: 0:191: 'xy' :  field selection requires structure, vector, or matrix on left hand side <br>
ERROR: 0:191: 'xy' :  field selection requires structure, vector, or matrix on left hand side <br>
ERROR: 0:191: 'constructor' : not enough data provided for construction



我不完全确定此时该做什么。我是很多新手,很可能是我缺少明显的东西。
我的(无效,但您可以看到错误)代码笔在这里:http://codepen.io/ikimono/pen/RWVJYv

先感谢您!

最佳答案

重新定义错误表示您已经定义了一个变量。仅在定义变量时才需要声明它的类型。

您需要更改以下内容:

vec2 uv = -1.0 + 2.0 *vUv;
vec2 res = -1.0 + 2.0 *vUv;
vec2 res = iResolution.xy / iResolution.y;
vec2 uv = fragCoord.xy / iResolution.y;


对于这些:

vec2 uv = -1.0 + 2.0 *vUv;
vec2 res = -1.0 + 2.0 *vUv;
res = iResolution.xy / iResolution.y;
uv = fragCoord.xy / iResolution.y;


编辑:

对于扩展名错误,这意味着您需要启用GL_OES_standard_derivatives扩展名(如果图形卡支持)。
要检查扩展名是否可用,可以使用此命令将可用扩展名列表打印到控制台:

console.log(gl.getSupportedExtensions());


其中gl是您的WebGL上下文。

如果该扩展名有效,您可以通过调用以下命令启用它:

gl.getExtension('OES_texture_float');


并将其添加到着色器的开头:

#ifdef GL_OES_standard_derivatives
    #extension GL_OES_standard_derivatives : enable
#endif


检查this page以获取更多信息。

关于javascript - 尝试实现ShaderToy时出现Threejs错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32981262/

10-13 04:54