nexuslrf / ENVIDR

Implicit Differentiable Render with Neural Environment Lighting
https://nexuslrf.github.io/ENVIDR/
MIT License
77 stars 3 forks source link

Question about roughness value. #4

Closed bring728 closed 1 year ago

bring728 commented 1 year ago

Hi! Thank you for your great work.

i have a question about roughness value.

You used roughness=0.64(\rho_0) when calculating diffuse pre-integrated lighting in Env MLP. Can you explain this further?

Of course, the roughness here is not the same as the roughness of BRDF (that is, \rho != \alpha ), but it is expected to be used in a similar sense. And if so, wouldn't it be correct to use 1.0 instead of 0.64 for diffuse pre-integrated lighting?

And going a little further, if the roughness input to Env MLP is the same as the roughness of BRDF, what do you think is the correct value to use for \rho_0? In this case, do you think it's 1.0 or do you still think it's 0.64?

nexuslrf commented 1 year ago

Hi, Very sorry for the late response! The selection of \rho there is a pretty tricky operation. My initial thought is to tune the \rho value in vMF distribution to make it more like a cosine distribution (used in Lambertian BRDF) in shape. As shown in the following figure below.

image

Of course, you can use \rho=1.0 in such a scenario, but there would be slightly more integral contributions from the lower hemisphere (abs(\theta) > \pi/2) of normal dir.

image

However, both 0.64 and 1.0 are just some approximations of the diffuse BDRF, and neither are 100% physically correct. I don't think there would be significant differences.

I also think about how to make it more elegant after the paper submission. Actually, you can directly use SH encoding of spherical cosine function instead of approximating it with manually-tuned vMF.

bring728 commented 1 year ago

Thanks for the detailed explanation!