• Advertisement

XavierArias

Member
  • Content count

    3
  • Joined

  • Last visited

Community Reputation

110 Neutral

About XavierArias

  • Rank
    Newbie
  1. i've tried optimizing this shader with squared distances and so and i haven't got much better results, so i'm going to change all this shader-based lighting for something similar to what kalle_h said, but have to take a look at the additive blending and see if it's what i'm looking for. Thanks for all your replies.
  2. Then what is the alternative? I thought that it would avoid redundant computations to have one texture on top of the other and light every pixel of them. I've also though that vertex lighting would not be easy to apply as a big texture is represented by a simple quad... Sorry about the bad spelling, i've corrected every mistake that i've found.
  3. 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: [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 [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]
  • Advertisement