Jump to content
  • Advertisement
Sign in to follow this  
silikone

3D Handling emission in a G-buffer

Recommended Posts

So the foolproof way to store information about emission would be to dedicate a full RGB data set to do the job, but this is seemingly wasteful, and squeezing everything into a single buffer channel is desirable and indeed a common practice. The thing is that there doesn't seem to be one de facto standard technique to achieve this. A commonly suggested solution is to perform a simple glow * albedo multiplication, but it's not difficult to imagine instances where this strict interdependence would become an impenetrable barrier. What are some other ideas?

Share this post


Link to post
Share on other sites
Advertisement

I use the "metalness" parameterisation already, where you store a single color which is used to calculate the albedo and the specular reflectance colors, based on the metalness value. So yeah, I did what you mentioned and stored a single emission value (as log luminance) and multiplied that with color to get the emissivity color. 

Most of the time this is completely fine for me - if something is emitting light, it's probably diffusing/reflecting light with the same color. e.g. A glowing red sign is often just red plastic over a light - it should emit red light and also have a red albedo. 

The situations where I've found trouble are things like TV screens that are in direct sunlight. The emissive color should show the content of the TV show that's playing, but the albedo should be very dark grey. Normally this isn't at all noticeable though, and I don't actually have any TV's in my game, so I put up with it. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!