Area Light eval_fac value

I’ve been trying to export area lights to Mitsuba 2, and ran into some issues converting the Power value specified in the UI (W) to the irradiance value (W/m²/sr) Mitsuba 2 expects. Given a planar surface emitting along its normal direction, the conversion should be: irr = P / (area * 2pi).
However, using this formula to compute the irradiance gives different results. As I mentioned here, a 1m² plane with an emission shader does not emit the same amount of light as a 1m² area light with the same power value.

I dug in Cycles code and found out that the eval_fac of KernelLight in the area light case is computed as 1 / (area * 4.0) (code here), I think it should be 1 / (area * 2.0 * pi) to actually be in the correct unit, as claimed by @brecht here: Cycles, unit of light energy ATTN: Brecht - #2 by brecht

Using this conversion factor for exporting area lights in Mitsuba 2 produces the same render as Cycles, confirming that it is indeed this scale factor.

2 Likes

Blender Power unit doesn’t consider the emission angle, probably for ease of use, so that you can switch between point, spot and area and keep the same brightness.

I added a Power (Advanced) unit in Photographer 3 to fix these issues and make it work the way you expect it: