重要性采样 ggx
https://patapom.com/blog/Math/ImportanceSampling/
https://www.tobias-franke.eu/log/2014/03/30/notes_on_importance_sampling.html
https://www.cs.cornell.edu/~srm/publications/EGSR07-btdf.pdf
因为normal distribution 的半球积分 要乘cos 才等于1 这里是对能量的一个积分 涉及了n和l方向的一致性所以乘了costheta 遵循的是能量守恒
各个光照模型归一化(可能是叫这个名字)求这个归一化参数的时候都要用全域积分=1来算
pdf的半球积分 也等于1
ggx里面两个参数 要用条件概率来降低维度
这里补充下 2维pdf这部分的处理
通过这个
多维度的情况
第二行 pdf theta|phi写反了应该是pdf phi|theta
对于这个 把phi积分起来0-2pi 把thera当变量
大概是这样
这里不应该有sintheta 这俩链接已开始对pdf定义少了个sintheta 后者只是把dw拆开 sinthetadthera来写
对于ggx
因为
paper里 这里写的是对的
链接里 这里不太对 也就是上面摘录的最后一步
应该是
即
float CosTheta = sqrt( (1 - E.y) / ( 1 + (a2 - 1) * E.y ) );
float Phi = 2 * PI * E.x; float CosTheta = sqrt( (1 - E.y) / ( 1 + (a2 - 1) * E.y ) ); float SinTheta = sqrt( 1 - CosTheta * CosTheta ); float3 H; H.x = SinTheta * cos( Phi ); H.y = SinTheta * sin( Phi ); H.z = CosTheta;
啊写的不连贯 过三天我自己就忘了
用ggx的ndf
求pdf
再求cdf
再求cdf的逆就是采样点 因为是重要性采样 这个采样点很接近H
LV的中间 采样点是球面上的点 所以严谨的说是个方向 用θφ定义