Part of the Khronos Group
OpenGL.org

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

Threaded View

  1. #1
    Junior Member Newbie
    Join Date
    Sep 2012
    Posts
    3

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

    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-05-2012 at 11:58 PM. 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
  •