I am trying to understand how the generation of irradiance maps works. I was reading LearnOpengGL tutorial and Codinglabs article. Reading those articles, I got a bit confused about how we use convolution to generate the irradiance map.

Do we apply the integral to the environment map to convolute it, and do we do it because our environment map is equirectangular?


Yes, the convolution is effectively evaluating the following integral:

$$ \text{irradianceMap}(\vec n) = \frac{1}{\pi} \int \text{environmentMap}(\vec \omega_i) \, \max(\vec n \cdot \vec \omega_i, 0) \, d\omega_i $$

This convolution isn't about whether the environment map is equirectangular, cubemap, or some other projection. We still have to do the convolution regardless, because we want to get the total diffuse light (irradiance) coming to a surface with a given normal, from all directions in the hemisphere around that normal. The environment map to start with just has light from one direction (radiance).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.