先说明一下,我们平常说的GGX的正确技术名称就是trowbridge-Reitz。

各向同性GGX

微表面的法线分布定义如下:

其中D(h)是法线分布函数,cosθh是N dot h。

根据概率密度函数的转换:p(θ, φ) = sinθp(ω) 

根据边际概率密度:

求条件概率:

分别求θ和φ的概率累积函数:

上面的积分非常难求,我在Symbolab 数学求解器 - 分步计算器上解出来。

通过代数求得:

φ的概率累积函数:

各向异性GGX

继续按p(θ, φ) = sinθp(ω)得到:

由于上面的积分特别难解,我们的目的是去求φ和θ,根据概率累积函数的定义,可以分别直接求θ和φ。

我们定义θ的CDF是

由于上面式子中的φ和α都能做为常数,我们定义一个辅助常量A(φ)

最后上面的求出来是:

这个时候我们只需要求得φ就能求出θ了。

再返回来求边际概率密度函数p(φ),p(φ)就是p(θ)在他定义域里的CDF,所以有:

以上可以求出要采样的微表面法线h,但蒙特卡洛方法是对入射光的采样,因此我们必须要求出p(ωi)。

下面我们来看立体角dωi和dωh的关系:

如上图所示,我把dωr看成是dωi,dω'看成是dωh。

由于IR = 2IP,那么

dA''' = dAr/4;

再看dA''和dA'''的关系:

OP = cosθi',OQ = 1;

那么dA''和dA'''关系是:dA''' = cosθi'²dA''。

换回ωh和ωi就是:

所以有:

到这里推导才完毕。

=======也可以用pbrbook的来推导======

和几个朋友讨论,最后一位QQ名叫壳的解答了我一直不太懂的地方。

这里重新定义θh和θi,使得2θh = θi,并且满足:ωh = ωo + ωi。

但在其他地方,θh是h和N的夹角,这里会让人非常迷惑为何会成立。

由于φi = φh,

所以这里得出了dωh和dωi的关系,然后把这个坐标系转回以宏观法线N为z轴向上的坐标系下,关系依然成立!

参考:

pbr-book

Sampling Anisotropic Microfacet BRDF – A Graphics guy's notePLEASE BE NOTED, this blog has be relocated to a new address, I’ll not spend time maintaining my blog at wordpress anymore. https://agraphicsguynotes.com/posts/sample_anisotropic_microfacet_brdf/ I am working on material system in my renderer recently. My old implementation of microfacet models is all isotropic BRDF, as a result of which, I can't render something like brushed metals…https://agraphicsguy.wordpress.com/2018/07/18/sampling-anisotropic-microfacet-brdf/

微表面模型GGX/Trowbridge-Reitz概率密度函数的推导相关推荐

  1. 基于物理的渲染—更精确的微表面分布函数GGX

    原文链接:https://blog.uwa4d.com/archives/1582.html 在上次介绍的微表面模型文章中,我们曾提到过模型中有一个模拟物体表面反射高光的函数 Rs .在该函数中,有一 ...

  2. GAMES101作业7及课程总结(重点实现多线程加速,微表面模型材质)

    目录 闲言碎语 最终全部效果展示(均为1024×1024×512ssp) 课程总结与理解(Path Tracing) 框架梳理 任务一:迁移相关代码 任务二:实现path tracing 任务三:多线 ...

  3. GAMES101作业7提高-实现微表面模型你需要了解的知识

    目录 微表面材质模型 微平面理论 Microfacet Theory BSDF(浅浅的提一下) 微表面BRDF的实现 Cook-Torrance BRDF 漫反射的BRDF 镜面反射的BRDF 1 法 ...

  4. 卡方分布概率密度函数的推导

    推导过程参考自陈希孺<数理统计学教程>1.4节,在原文基础上补充了一些细节. 文章目录 预备知识 标准正态分布 Γ\GammaΓ函数(伽马函数) 推导目标 推导过程 简单情况 正式推导 补 ...

  5. 微表面模型Beckmann–Spizzichino distribution的概率密度函数推导

    微表面的法线分布定义如下: 得到:                         (1)式      看Beckmann–Spizzichino中,各向同性的分布定义: 根据(1)式,p(θ, φ) ...

  6. 粗糙表面的微表面模型——Physically Based Material

    关于文章 Microfacet Models for Refraction through Rough Sufaces的一点笔记,欢迎指正. BSDF BSDF(Bidirectional Sactt ...

  7. 正态分布概率密度函数的推导

    看概率统计书上都是直接给出正态分布的概率密度函数,有时候好奇为什么要是这个样子,于是上网查了一下,发现其是可以通过一些合理的前提假定推导出来的. 链接如下: http://www.flickering ...

  8. F分布概率密度函数的推导

    推导过程整理自https://www.bilibili.com/video/BV1qf4y1R7FA. 文章目录 预备知识 Γ \Gamma Γ函数(伽马函数) 标准正态分布 卡方分布 推导目标 引理 ...

  9. t分布概率密度函数的推导

    推导过程整理自https://www.bilibili.com/video/BV1s54y1S7Ji. 文章目录 预备知识 Γ\GammaΓ函数(伽马函数) 标准正态分布 卡方分布 推导目标 引理:连 ...

最新文章

  1. 数字信号处理中的归一化频率
  2. BZOJ 1226: [SDOI2009]学校食堂Dining [DP 状压]
  3. Linux格式化异常,Linux下DateFormat的parse方法出现”ParseException”异常
  4. c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析
  5. ArrayList和LinkedList如何实现的?我看你还有机会!
  6. Python爬虫中最重要、最常见、一定要熟练掌握的库
  7. 微软职位内部推荐-SW Engineer II for Skype
  8. POJ 2082Lost Cows
  9. wps带阴影的边框怎么设置_win10系统设置wps阴影边框的具体办法
  10. js室内地图开发_微信小程序室内地图导航开发-微信小程序JS加载esmap地图
  11. 系统设计师之路·第二节·看山是山,看水是水——设计师的三种境界
  12. 前端小demo:星星闪烁
  13. 日历控件CalendarView
  14. 牛客笔试OJ-在线编辑器输入输出总结
  15. 找不到ps选择主体_怎么找不到ps“选择主体”功能?
  16. 删除浏览器的cookie
  17. Python环境搭建与输入输出
  18. 我的PFC岩土颗粒流离散元分析攻略(附赠学习资料)
  19. 绩效考核培训教程PPT模板
  20. 宽屏欧式家具电子商务网站模板

热门文章

  1. python中文讨论组_python - 中文名字随机生成器
  2. 读书笔记2014年第2本:《信息简史》
  3. aircrack-ng渗透WPA加密
  4. 小学计算机课玩的游戏,小学电脑课上偷偷玩儿过的5款游戏,又一个会引来围观...
  5. Android中Uri和path file三者的相互转换
  6. 图书管理系统功能设计
  7. Android 调用系统分享图片、视频等文件
  8. 个人2020春招面经记录
  9. PMP每日一练 | 考试不迷路-9.13(包含敏捷+多选)
  10. html语言文本,html语言是什么 HTML语言基础教程