微表面模型GGX/Trowbridge-Reitz概率密度函数的推导
先说明一下,我们平常说的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概率密度函数的推导相关推荐
- 基于物理的渲染—更精确的微表面分布函数GGX
原文链接:https://blog.uwa4d.com/archives/1582.html 在上次介绍的微表面模型文章中,我们曾提到过模型中有一个模拟物体表面反射高光的函数 Rs .在该函数中,有一 ...
- GAMES101作业7及课程总结(重点实现多线程加速,微表面模型材质)
目录 闲言碎语 最终全部效果展示(均为1024×1024×512ssp) 课程总结与理解(Path Tracing) 框架梳理 任务一:迁移相关代码 任务二:实现path tracing 任务三:多线 ...
- GAMES101作业7提高-实现微表面模型你需要了解的知识
目录 微表面材质模型 微平面理论 Microfacet Theory BSDF(浅浅的提一下) 微表面BRDF的实现 Cook-Torrance BRDF 漫反射的BRDF 镜面反射的BRDF 1 法 ...
- 卡方分布概率密度函数的推导
推导过程参考自陈希孺<数理统计学教程>1.4节,在原文基础上补充了一些细节. 文章目录 预备知识 标准正态分布 Γ\GammaΓ函数(伽马函数) 推导目标 推导过程 简单情况 正式推导 补 ...
- 微表面模型Beckmann–Spizzichino distribution的概率密度函数推导
微表面的法线分布定义如下: 得到: (1)式 看Beckmann–Spizzichino中,各向同性的分布定义: 根据(1)式,p(θ, φ) ...
- 粗糙表面的微表面模型——Physically Based Material
关于文章 Microfacet Models for Refraction through Rough Sufaces的一点笔记,欢迎指正. BSDF BSDF(Bidirectional Sactt ...
- 正态分布概率密度函数的推导
看概率统计书上都是直接给出正态分布的概率密度函数,有时候好奇为什么要是这个样子,于是上网查了一下,发现其是可以通过一些合理的前提假定推导出来的. 链接如下: http://www.flickering ...
- F分布概率密度函数的推导
推导过程整理自https://www.bilibili.com/video/BV1qf4y1R7FA. 文章目录 预备知识 Γ \Gamma Γ函数(伽马函数) 标准正态分布 卡方分布 推导目标 引理 ...
- t分布概率密度函数的推导
推导过程整理自https://www.bilibili.com/video/BV1s54y1S7Ji. 文章目录 预备知识 Γ\GammaΓ函数(伽马函数) 标准正态分布 卡方分布 推导目标 引理:连 ...
最新文章
- 数字信号处理中的归一化频率
- BZOJ 1226: [SDOI2009]学校食堂Dining [DP 状压]
- Linux格式化异常,Linux下DateFormat的parse方法出现”ParseException”异常
- c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析
- ArrayList和LinkedList如何实现的?我看你还有机会!
- Python爬虫中最重要、最常见、一定要熟练掌握的库
- 微软职位内部推荐-SW Engineer II for Skype
- POJ 2082Lost Cows
- wps带阴影的边框怎么设置_win10系统设置wps阴影边框的具体办法
- js室内地图开发_微信小程序室内地图导航开发-微信小程序JS加载esmap地图
- 系统设计师之路·第二节·看山是山,看水是水——设计师的三种境界
- 前端小demo:星星闪烁
- 日历控件CalendarView
- 牛客笔试OJ-在线编辑器输入输出总结
- 找不到ps选择主体_怎么找不到ps“选择主体”功能?
- 删除浏览器的cookie
- Python环境搭建与输入输出
- 我的PFC岩土颗粒流离散元分析攻略(附赠学习资料)
- 绩效考核培训教程PPT模板
- 宽屏欧式家具电子商务网站模板
热门文章
- python中文讨论组_python - 中文名字随机生成器
- 读书笔记2014年第2本:《信息简史》
- aircrack-ng渗透WPA加密
- 小学计算机课玩的游戏,小学电脑课上偷偷玩儿过的5款游戏,又一个会引来围观...
- Android中Uri和path file三者的相互转换
- 图书管理系统功能设计
- Android 调用系统分享图片、视频等文件
- 个人2020春招面经记录
- PMP每日一练 | 考试不迷路-9.13(包含敏捷+多选)
- html语言文本,html语言是什么 HTML语言基础教程