Part of the Khronos Group

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 1 of 1

Thread: 2D lightning from multiple point sources on GLSL ES 2.0 in iPhone

  1. #1
    Junior Member Newbie
    Join Date
    Sep 2012

    2D lightning from multiple point sources on GLSL ES 2.0 in iPhone

    as i'm a complete noob with shaders i've got some problems while trying to get to work a 2D lighting system that basically covers the screen with a 2D black texture with transparent holes where the lighten areas are.

    As i'm using only one texture I guess that i must do this in the fragment shader, right?

    Fragment shader:
    Code :
        #ifdef GL_ES
        precision mediump float;
        // 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);

    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
    Last edited by XavierArias; 09-06-2012 at 12:58 AM. Reason: correct lightning to lighting

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts