Ale*_*yne 10 glsl webgl three.js
所以我有这个片段着色器,它工作得很好,直到我将一些逻辑重构成一个单独的函数.我希望能够多次调用它来将不同版本的效果叠加在一起.
但是,一旦我创建了这个自定义函数,着色器就会开始抛出错误:
ERROR: 0:33: 'grid' : no matching overloaded function found
Run Code Online (Sandbox Code Playgroud)
哪个是奇怪的,因为它似乎正在将其编译为函数.如果我删除了return
从grid()
我得到这个错误太:
ERROR: 0:36: '' : function does not return a value: grid
Run Code Online (Sandbox Code Playgroud)
那么我在这里想到的关于声明函数的内容是什么?
完整着色器:
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);
}
Run Code Online (Sandbox Code Playgroud)
rgn*_*ngl 20
你要么必须在main之前放置网格函数,要么像在c中那样声明它.
如:
float grid(float size);
Run Code Online (Sandbox Code Playgroud)
在主要方法之前.
归档时间: |
|
查看次数: |
6889 次 |
最近记录: |