Home › Forums › Games202-高质量实时渲染 › [作业4]请教 E(u)的计算
- This topic has 11 replies, 9 voices, and was last updated 1 month, 2 weeks ago by
EauDouce.
-
AuthorPosts
-
-
Neil2077
Participant作业4,2.2.1 预计算 E(u) 的部分:这个是一个双重积分。。。这个怎么用蒙特卡洛方法求解?之前都是搞一重积分。。。请高手指点!先谢过!
-
小夜子
Participant公式里是双重积分。但利用蒙特卡洛积分后,其实是对球面进行采样完积分,所以核心是对球面进行采样。
-
Neil2077
Participant这个点搞明白了,多谢!
不过,还是不会做….,继续请教。:)
IntegrateBRDF()函数的注释: TODO: To calculate (fr * ni) / p_o here
这里的 fr 就是微表面模型的 brdf 值,对吧? p_o 是样本的 pdf 值?就是这个 ni 是啥。。。。
-
-
Neil2077
Participant又看了一遍文档,尝试 ni==mu_i,即 sin(theta)。。。貌似结果是正确了
-
Yui
Participant积分里不是乘的sin(theta)吗,怎么这里用的是n*i,也就是cos(theta)呢?
-
闪电的蓝熊猫
Participant这个我查了原paper,发现paper里用的是cos(theta),闫老师讲的是sin(theta),可能是弄错了。
-
并不是闫大讲错了,是你没有想明白为什么这积分里用cos还是sin的值会一样,原因我发下面了
This post has received 1 vote down.
-
-
别纠结sintheta,costheta,他就是把反射率方程的Li换成1然后做换元,我们还是对反射率方程做蒙特卡洛积分。可以看下面的推导
This post has received 1 vote up.Attachments:
You must be logged in to view attached files. -
为什么就没人把话说完,ZETAAAAAA的公式是对的,对立体角的积分转化为对theta和phi的积分,再转换为sin theta和phi的积分,其实这三个积分都可以做蒙特卡洛,而且值还都是相等的,那么三次蒙特卡洛的区别在哪里?
1.积分公式:第一个积分里面是cos,第二个积分里面是cos sin ,第三个积分里面是sin
2.pdf:(假设都是均匀采样,那么概率密度就是积分区域的倒数)做蒙特卡洛是要当前采样积分结果乘1/pdf的,第一个积分的pdf显然就是半球立体角的倒数1/2pi,第二个积分的pdf(双重积分的pdf用两次采样pdf的乘积)是theta的积分域pi/2的倒数与phi的积分域2pi的倒数乘积= 1 / pi^2,第三个积分的pdf是 sintheta 积分域 1 的倒数 和 phi 积分域 2pi的倒数乘积 = 1/2pi
综上所述,所以不用纠结积分公式里是sin 还是 cos,因为他们的pdf都是 1/2pi,所以无论是cos还是sin都不会改变这个积分的值This post has received 2 votes down.-
还是用第一行的公式,而不是第三行的,这样就是cosθ了
This post has received 1 vote up.
-
-
其实这个问题很简单,我们去看一下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 是 蒙特卡洛积分公式自带(得回去复习一下了)
-
-
AuthorPosts
- You must be logged in to reply to this topic.