Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GLSL:我的自定义函数不是';找不到_Glsl_Webgl_Three.js - Fatal编程技术网

GLSL:我的自定义函数不是';找不到

GLSL:我的自定义函数不是';找不到,glsl,webgl,three.js,Glsl,Webgl,Three.js,所以我有这个片段着色器,在我将一些逻辑重构成一个单独的函数之前,它一直工作得很好。我希望能够多次调用它,将不同版本的效果叠加在一起 但是,我一创建此自定义函数,着色器就开始抛出错误: ERROR: 0:33: 'grid' : no matching overloaded function found 这是wierd,因为它似乎是作为函数编译的。如果我从grid()中删除返回值,我也会出现以下错误: ERROR: 0:36: '' : function does not return a v

所以我有这个片段着色器,在我将一些逻辑重构成一个单独的函数之前,它一直工作得很好。我希望能够多次调用它,将不同版本的效果叠加在一起

但是,我一创建此自定义函数,着色器就开始抛出错误:

ERROR: 0:33: 'grid' : no matching overloaded function found 
这是wierd,因为它似乎是作为函数编译的。如果我从
grid()
中删除
返回值
,我也会出现以下错误:

ERROR: 0:36: '' : function does not return a value: grid
那么,关于声明函数,我遗漏了什么呢

此处为完整着色器:

uniform float brightness;
uniform float shiftX;
uniform float shiftY;

uniform vec4 color;
varying vec3 vPos;

void main() {
  gl_FragColor = vec4( grid(200.0), 0.0, 0.0, 1.0 );
}

float grid(float size) {
  float x = pow(abs(0.5 - mod(vPos.x + shiftX, 200.0) / 200.0), 4.0);
  float y = pow(abs(0.5 - mod(vPos.y + shiftY, 200.0) / 200.0), 4.0);
  return (x+y) * 5.0 * pow(brightness, 2.0);
}

您要么将网格函数放在main之前,要么像在c中那样向前声明它

例如:

float grid(float size);

在主方法之前。

Wow。不好意思,我没想到要试试。谢谢