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

重要性采样 ggx_光照模型

 

重要性采样 ggx_技术_02

 

 

 

重要性采样 ggx_光照模型_03

 

 重要性采样 ggx_条件概率_04

因为normal distribution 的半球积分 要乘cos 才等于1 这里是对能量的一个积分 涉及了n和l方向的一致性所以乘了costheta 遵循的是能量守恒

各个光照模型归一化(可能是叫这个名字)求这个归一化参数的时候都要用全域积分=1来算

重要性采样 ggx_技术_05

 

 

pdf的半球积分 也等于1 

 

ggx里面两个参数 要用条件概率来降低维度

这里补充下 2维pdf这部分的处理

通过这个

 多维度的情况

 

 重要性采样 ggx_光照模型_06

 

 重要性采样 ggx_条件概率_07

 

 

重要性采样 ggx_html_08重要性采样 ggx_光照模型_09

第二行 pdf theta|phi写反了应该是pdf phi|theta

 

 

 重要性采样 ggx_归一化_10

 

 

重要性采样 ggx_技术_11对于这个 把phi积分起来0-2pi 把thera当变量

 

大概是这样

重要性采样 ggx_html_12

 

 

重要性采样 ggx_技术_13这里不应该有sintheta 这俩链接已开始对pdf定义少了个sintheta 后者只是把dw拆开 sinthetadthera来写

 

 

 

 

 

对于ggx

因为

重要性采样 ggx_光照模型_14

 

 

 重要性采样 ggx_技术_15

 

 

 

 重要性采样 ggx_条件概率_16

 

 

 

 

paper里 这里写的是对的

重要性采样 ggx_条件概率_17

 

 

链接里 这里不太对 也就是上面摘录的最后一步

重要性采样 ggx_html_18

 

应该是

 

 

 重要性采样 ggx_光照模型_19

 

 

 

 

 

 

 

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的中间 采样点是球面上的点 所以严谨的说是个方向 用θφ定义