其实这个问题很简单,我们去看一下squareToCosineHemisphere这个蒙特卡洛积分中,他的求导单位是什么就明白了。
蒙特卡洛积分是对连续函数的离散分析,他的sampleList中的Direction代表的是dwi立体角,而不是dudphi。也就意味着我们积分内的公式应当使用ZETAAAAAAAA的图片中的第一条。所以这里ni代表的就是cos(theta in)而不是ui。
最后单个离散积分的公式应当是(F * D * G) / (4.0f * NdotV * NdotL) * NdotL / pdf
这里,
(F * D * G) / (4.0f * NdotV * NdotL) 是 microfacet brdf
NdotL 是渲染方程带的 cos(theta in)
1/pdf 是 蒙特卡洛积分公式自带(得回去复习一下了)