zoukankan      html  css  js  c++  java
  • 重要性采样 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的中间 采样点是球面上的点 所以严谨的说是个方向 用θφ定义

  • 相关阅读:
    oracle11g 新特性
    RMAN 报:ORA-19504 ORA-27038
    ORACLE-用户常用数据字典的查询使用方法
    oracle
    收缩 表空间
    oracle 配置 oem
    索引大小及占表的空间
    Oracle 11g Windows 迁移至 Linux
    Python:列表生成式
    Python:字符串处理函数
  • 原文地址:https://www.cnblogs.com/minggoddess/p/14645677.html
Copyright © 2011-2022 走看看