Quindi ho questo framment shader, che funzionava benissimo finché non ho rifatto la logica di una funzione separata. Voglio essere in grado di chiamarlo più volte per sovrapporre diverse versioni dell'effetto l'uno sopra l'altro.GLSL: La mia funzione personalizzata non è stata trovata
Tuttavia, non appena ho creato questa funzione personalizzata, lo shader inizia gettando l'errore:
ERROR: 0:33: 'grid' : no matching overloaded function found
Che è strano, perché sembra essere compilarlo come la funzione. Se rimuovo il return
da grid()
ottengo questo errore troppo:
ERROR: 0:36: '' : function does not return a value: grid
Allora, cosa mi manca qui sulle funzioni dichiarando?
completa dello shader qui:
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. Imbarazzato non ho pensato di provarlo. Grazie. –
Prego. – rgngl