The result is not wrong, it just needs a few more samples to converge. Previously we deliberately give lobes with low contribution a minimal probability to sample, in case the next bounce has…
This is caused by 5b6f2ef5a26023c7e869a19fb8568c8faf8f2c79, mesh.normals_domain()
changed after split_faces
is defined.
But I don't understand why normals domain would change when switching…
I think the kernel is all C++ now, but not feature complete on some GPUs, not sure what exactly is supported but if buildbot doesn't complain it should be fine.
This does not compile on Metal. Add ccl_private
.
For cognitive ease I would prefer to add an empty if (fresnel->thin_film.thickness > 0.1f)
branch and put the comment there, the following block is then put in the else
branch
The newly added sqr()
is not used, I assume you wanted to use it here?
Yes, you are right, I was not paying attention to the denominator. I remember switching the order was only to make the two lines have the same structure because the sign didn't matter. Sorry for…
Do you mean the sign of cos_theta_t
? In fresnel_dielectric()
it is the angle between the surface normal and the refracted ray, hence negative, and the sign is used in Principled Hair Huang I…