Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualKaiserJohan

Posted 16 April 2013 - 04:38 AM

Hello,

 

Right now I'm using a forward renderer (OpenGL 3.3+) where I just run one pass with a maximum amount of lights predefined in the scene:

 

 

 

const int numberOfLights = 8;

struct PerLight
{
vec4 position;
vec4 intensity;
}

uniform Lights
{
vec4 ambientIntensity;
float lightAttenuation;
PerLight lights[numberOfLights];
} Lgt;
 

There are some issues, like for example if I only have 2 lights I still have to fill up space for 8, and the maximum amount is set at 8 so its not very flexible and dynamic. I want to be able to support any given amount of lights and I want my code to be independent of the amount of lights in the scene. 

 

I've read something about multipass forward rendering.. but I don't know really what it means, and I cannot find any good sources. From what I've gathered so far, it involves rendering each mesh a number of times equal to the number of lights that affects it and then somehow add the results? So for example if I have one mesh affected by 3 lights, I would render it three times and blend the results?

 

Do I understand it correctly? Also I do not know how to implement it in practice, is there any complete examples lying around? For example, how do you setup the actual blending between rendering passes, what opengl functions are used, etc? Is there anything else I should know?

 

Also, I have read about deferred rendering, but from what I've gathered it sounds abit complex and I'd rather try to atleast First get a multipass forward renderer working, since that seems easier and cooperates better with all the other tutorials on the internet (for example I still havnt learned texturing)


#1KaiserJohan

Posted 16 April 2013 - 04:04 AM

Hello,

 

Right now I'm using a forward renderer where I just run one pass with a maximum amount of lights predefined in the scene:

 

 

 

const int numberOfLights = 8;

struct PerLight
{
vec4 position;
vec4 intensity;
}

uniform Lights
{
vec4 ambientIntensity;
float lightAttenuation;
PerLight lights[numberOfLights];
} Lgt;
 

There are some issues, like for example if I only have 2 lights I still have to fill up space for 8, and the maximum amount is set at 8 so its not very flexible and dynamic. I want to be able to support any given amount of lights and I want my code to be independent of the amount of lights in the scene. 

 

I've read something about multipass forward rendering.. but I don't know really what it means, and I cannot find any good sources. From what I've gathered so far, it involves rendering each mesh a number of times equal to the number of lights that affects it and then somehow add the results? So for example if I have one mesh affected by 3 lights, I would render it three times and blend the results?

 

Do I understand it correctly? Also I do not know how to implement it in practice, is there any complete examples lying around? For example, how do you setup the actual blending between rendering passes, what opengl functions are used, etc? Is there anything else I should know?

 

Also, I have read about deferred rendering, but from what I've gathered it sounds abit complex and I'd rather try to atleast First get a multipass forward renderer working, since that seems easier and cooperates better with all the other tutorials on the internet (for example I still havnt learned texturing)


PARTNERS