Así que tengo este sombreador de fragmentos, que funcionaba de maravilla hasta que reformé parte de la lógica en una función separada. Quiero poder invocarlo varias veces para superponer diferentes versiones del efecto una encima de la otra.GLSL: Mi función personalizada no se encuentra
Sin embargo, tan pronto como se creé esta función personalizada, el shader comienza a lanzar el error:
ERROR: 0:33: 'grid' : no matching overloaded function found
Cuál es extraño, ya que parece ser la compilación como la función. Si quito el return
de grid()
consigo este error también:
ERROR: 0:36: '' : function does not return a value: grid
Entonces, ¿qué me estoy perdiendo aquí acerca de declarar funciones?
shader completa aquí:
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);
}
Wow. Avergonzado, no pensé en intentar eso. Gracias. –
De nada. – rgngl