# GL_BLEND for Multipass Lighting with GLSL

This topic is 2524 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Starting with the code:
 shaders->Bind("replace_fixed"); shaders->SetInt("use_decal_map", 1); shaders->SetInt("decal_map", 0); shaders->SetInt("use_normal_map", 0); shaders->SetInt("normal_map", 2); glEnable(GL_BLEND); glBlendFunc(GL_ONE, GL_ONE); //glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR); std::vector<EG::Engine::Graphics::Light *>::iterator light_iterator = scene->GetRenderableLights()->begin(); while (light_iterator != scene->GetRenderableLights()->end()){ EG::Engine::Graphics::Light *light = *light_iterator; if (light->IsEnabled()){ shaders->SetFloat3("light_position", light->Position().X(), light->Position().Y(), light->Position().Z()); shaders->SetFloat3("light_color", light->Color().X(), light->Color().Y(), light->Color().Z()); shaders->SetFloat4("lighting_parameters", light->Attenuation().X(), light->Attenuation().Y(), light->Attenuation().Z(), light->GetRadius()); std::vector<EG::Engine::Game::Object *>::iterator renderable_objects_iterator = scene->GetRenderableObjects()->begin(); while (renderable_objects_iterator != scene->GetRenderableObjects()->end()){ RenderObject((*renderable_objects_iterator)); ++renderable_objects_iterator; } } ++light_iterator; } shaders->Unbind(); glDisable(GL_BLEND);

There are three lights, red, green and blue...
I have a deferred renderer which is working fine, but I wanted to support some other hardware...
(say a work computer for those boring lunch hours)

I wrote a shader which did 3 lights at a time but I didn't want to be limited... blah
So I simplified the shader down to just one light and decided to use a multipass solution.

The computer I'm working on at work does not support any decent FBO setups so I'm skipping those for this purpose.

Basically what I get is the first light that was rendered....

so if I'm looping through my lights in this order, red, green, blue
I only see Red's light.
If I start it at Green, I only see Green, etc...

Can anyone see any obvious problems?

##### Share on other sites
Depth test has been set to LESS_OR_EQUAL, not to LESS?

##### Share on other sites
It was set to the default... which I'm not sure what that is, but changing it to GL_LEQUAL fixed the problem... thanks!