34.opengl PBR-理论

一、什么是PBR

PBR:Physically Babsed Rendering,基于物理的着色

为什么有PBR

phong光照模型,没有遵循能量守恒,对光照的反应看起来并不真实,PBR是对phong光照模型的一次革命性升级,但是最基本的概念并没有变,都是要计算 反射、漫反射、环境光,只是计算的精确度更高

  1. 基于微平面的表面模型

微平面

  1. 能量守恒

能量守恒

  1. 应用基于物理的BRDF,双向反射分布函数(Bidirectional Reflective Distribution Function) ,它的作用是基于表面材质属性来对入射辐射率进行缩放或者加权

Blinn-Phong满足BRDF,但是不满足能量守恒,真实度上不如PBR的效果好。

二、PBR的核心概念

1. 辐射通量:辐射通量Φ表示的是一个光源所输出的能量,以瓦特为单位。
2. 立体角:立体角用ω表示

立体角

立体角计算公式

3. 辐射强度:其中I表示辐射通量Φ除以立体角ω

辐射强度

4. 辐射率:单位面积上、单位立体角ω上辐射出的总能量。如下公式所示:是一个2元积分,其中cosθ表示入射角和平面法线夹角,联系前面的Phong光照可以想象,夹角越大,平面上的反射光照越弱。

辐射率

辐射率计算

5. 辐射照度or辐照度:

辐照度

Ω表示半球体

半球体

三、BRDF

BRDF就是解释上面辐照度公式中的fr

BRDF

漫反射:

反射:

Cook-Torrance反射率方程

随着Cook-Torrance BRDF中所有元素都介绍完毕,我们现在可以将基于物理的BRDF纳入到最终的反射率方程当中去了:

反射率方程

这个方程也不必去深究,暂且知道右边是对光照能量进行积分,得到总能量,左边括号里是区分反射和折射

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 音视频技术(1)- 参考资料

    1. 音视频开发进阶指南(笔者主要从事移动端开发,以这本书入门,通篇了解音视频处理比较合适):

    用户1068165
  • 重新理解“职业焦虑”

    之前是30岁危机,现在谈的更多的是35岁。中年人失业率到底是多少,不得而知,我能看到的是身边35左右的朋友绝大多数工作都还不错,基本都是团队骨干元老,并没有所谓...

    用户1068165
  • Qt学习采坑记录

    6.calling '**' with incomplete return type 解决方法是,在项目头文件中,添加相应的头文件包含,在本题中是

    用户1068165
  • 文件系统特殊命令一览表

    behavior参数 描述:查询下列行为的当前设置,生成 8.3 字符长的文件名、允许 NTFS 卷上 8.3 字符长的文件名中的扩展字符、更新 NTFS 卷上...

    WeiyiGeek
  • 这个前端竟然用动态规划写瀑布流布局?给我打死他!

    瀑布流布局是前端领域中一个很常见的需求,由于图片的高度是不一致的,所以在多列布局中默认布局下很难获得满意的排列。

    ssh1995
  • 《手把手教你》系列练习篇之5-python+ selenium自动化测试(详细教程)

      今天我们继续前边的练习,学习和练习一下:如何使用webdriver方法获取操作复选框-CheckBox、测试不同的分辨率、如何断言title、如何获取某一个...

    北京-宏哥
  • 使用GAN绘制像素画,用机器学习的方式协助绘画者更快地完成作品

    上面的图片来自Trajes Fatais:Feats of Fate游戏,我作为首席开发者从事该游戏的制作。长话短说,每个精灵要绘制大约一小时,每个角色平均要绘...

    deephub
  • 浅谈Java中的hashcode方法

      哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:

    Java团长
  • 浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:

    lyb-geek
  • 精灵图

    为什么要有精灵图? 最早的时候网速十分有限,为了提升用户体验,我们会将一张大图分解成多张小图来提高页面打开速度,但是网速得到了提升,为了能够让服务器承载更多的...

    河湾欢儿

扫码关注云+社区

领取腾讯云代金券