2012-10-12 35 views
6

Bu parçacı gölgelendiriciye sahibim. Bu, bazı mantığı ayrı bir işleve dönüştürdüğüm kadar iyi çalışıyordu. Efektin farklı sürümlerini birbirinin üzerine yerleştirmek için birden çok kez çağırmak istiyorum. GLSL: Özel işlevim bulamadı

Ancak, en kısa sürede bu özel bir işlevi yarattığı gibi, gölgelendirici hata atma başlar: o fonksiyonu olarak derleme yaptığından garip olduğunu

ERROR: 0:33: 'grid' : no matching overloaded function found 

. Ben grid() den return kaldırırsanız ben de bu hatayı alıyorum:

ERROR: 0:36: '' : function does not return a value: grid 

Yani ne işlevlerini bildirmek hakkında burada eksik? Burada

Tam shader:

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); 
} 

cevap

16

Ya ana önce ızgara fonksiyonunu koymak veya ileri Eğer c olduğu gibi beyan etmek zorundasınız.

gibi: ana yöntem önce

float grid(float size); 

.

+0

Vay. Utanıyorum, bunu denemedim. Teşekkürler. –

+0

Rica ederim. – rgngl