This topic is now archived and is closed to further replies.

Importance sampling BRDFs

This topic is 5111 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, Let''s say I have a BRDF function called F. We assume that over the hemisphere of directions, F always integrates to one (as in diffuse lighting), so no energy is lost in scaling through F. Now assume I have a BRDF function G = F*0.1 (that is, the tenth of F). G clearly doesn''t integrate up to one, but to 0.1. So 90% of the energy is lost when scaling through G! But when we importance sample (using rejection sampling, for example) either F or G, we get exactly the same distribution of samples. Therefore, using 1 as weight for every importance sampled direction, the importance sampled BRDF integrates to PI. We just divide it by PI, and tada, we always get a BRDF integrating to one! After this we can control the percentual amount of reflected light using a user-defined reflectance parameter. But when we use F or G not to generate samples, but simply to scale light, as is in computing direct lighting for example, we get totally different results, because G is after all only 10% of F. Of course we don''t have this kind of multiplications by 0.1 in practice, but simple changes of BRDF parameters (such as in Shclick BRDF) can cause the BRDF to not integrate to unity. So is there some quirk around this "BRDF doesn''t integrate to unity" problem? Probably based on weighting samples appropriately? - Mikko Kauppila

Share this post

Link to post
Share on other sites