As i'm using only one texture I guess that i must do this in the fragment shader, right?
Fragment shader:
[source lang="cpp"] #ifdef GL_ES precision mediump float; #endif // Texture, coordinates and size uniform sampler2D u_texture; varying vec2 v_texCoord; uniform vec2 textureSize; uniform int lightCount; struct LightSource { vec2 position; float radius; float strength; }; uniform LightSource lights[10]; void main() { float alpha = 1.0; vec2 pos = vec2(v_texCoord.x * textureSize.x, v_texCoord.y * textureSize.y); int i; for (i = 0; i < lightCount; i++) { LightSource source = lights[i]; float distance = distance(source.position, pos); if (distance < source.radius) { alpha -= mix(source.strength, 0.0, distance/source.radius); } } gl_FragColor = vec4(0.0, 0.0, 0.0, alpha); }[/source]
The problem is that the performance is really terrible (cannot run at 60fps with 2 lights and nothing else on screen), any suggestions to make it better or even different ways to approach this problem?
By the way, i'm doing this from cocos2d-x, so if anyone has any idea that uses cocos2d elements it will be welcome as well






