Sign in to follow this  

emittive light, add or multiply?

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

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,

 

Probaly fairly simple question, but I'm curious what the 'right' way would be to add emittive light in my lighting 'system' (specified per material).


My first approach was multiplying the output pixel by the emittive light, but logically this gives no pixel color at all when there's no emission. So I figured adding the emittive light would be the trick. Works fine, but I doubt if this is 'the way' (maybe to much lit up?).

 

Here's what I've done now:

 

	float4 amb = (AmbientColor * AmbientIntensity * MatAmb) + MatEmm;
	float4 diff = (input.Color * MatDiff) + MatEmm;

// input.color is directional light outputted from the VS
// calculate point light etc., into att_total

	return saturate((diff + amb + att_total) * textureColor);

 

Just curious if this is the right way to approach this.

 

 

Share this post


Link to post
Share on other sites

Adding the emissive colour makes sense. However, your code seems to add on the emissive twice (once to the ambient and once to the diffuse). I suggest you read up a little on the basic lighting model which it looks like you're trying to implement, this website looks like it offers a pretty good summary http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter05.html,

Share this post


Link to post
Share on other sites

Thanks, tutorial looks very good and readable/ understandable (first part read).

You're right, I'm adding emissive twice now, doesn't make sense to link it to specific lightsources. Looks better and to 'bright' now.

Share this post


Link to post
Share on other sites
Sign in to follow this