本篇作为理论的概括介绍,并不涉及公式的部分
基于物理渲染的优点
很容易就可以作出真实和照片级的效果。

同一配置可以适用于在不同HDR光照环境下。
接口简单而直观,都是基于世界真实的参数。(如粗糙度,金属度,等等)。
不需要美术去提供经验性的"奇怪"参数和配置。

更容易去解决问题和扩展需求。
 
基于物理的渲染和传统渲染区别
有着基于物理规则的光照模式
有着无处不在的fresnel效果
能量守恒“energy conservation”,物体平面的反射光无法超过它所解接受的入射光
基于物理的材质,会分辨金属和介电质,微平面的概念
线性空间的光照,支持gamma矫正的,HDR渲染和tonemap
光与物质的交互(light and matter)
光是是一种横向传播的电磁波,电磁波的波长范围非常广,但只有390~760nm之间的一段波谱是人眼可见到的,也就是在图形学里对渲染着色起作用的部分。另外因为光有波粒二象性的缘故,有时候我们在图形学里也会把光做为光子(photon)来处理。
当光投射到传感器(眼睛,照相机等)上时,颜色和亮度就会被吸收并感知,而光与物质交互后被感知的,就是物体的颜色。
物质对光的影响,可以用折射率(refractive index)来描述,当由复数来表示折射率时,它的实部影响速度(相对于真空中的速度),虚部来影响光的衰减(被吸收),折射率会改变光的波长。
我们先根据物质按照内部折射率是否均匀来进行分类:
均匀介质(Homogeneous Media)
内部密度相同的物质,意味着他有唯一的折射率,对应透明的均匀物质来讲(如水,玻璃),光通过时,并不会改版光的颜色或强度,而当物质对某一种可见光谱有吸收率的时候,那么,光就会随着在物质内的传播距离而逐渐被吸收,而光的方向并不发生改变,这就是光被吸收(absorption)。
光穿透玻璃和水时,方向,颜色和强度都不会发生
方向没有变化,光但随着距离会丧失强度(改版颜色),也就是光被吸收了。
非均匀物质(heterogeneous medium)
当非均匀物质内部的折射率非常突然的时候,这时就会发生散射(Scattering)现象,光会被分割为多个方向,但光的总量并不会发生变化。
除了以上两种交互外,  物质还可能因为其他能量发出新的光,称为自发光”emission“。
光与物质交互的三种方式,吸收,散射,发光。
 
光与平面的交互(light and object surface)
上一个段落讲点,光在密度不同的物质内传递的现象,而渲染中最为典型的,是发生在物体表面时,关于光与空气和物质之间的散射效果。
这个时候平面散射光会分为两部分:进入平面的部分(折射,在物体内部传播中被吸收或散射),从平面出去的部分(反射)。
一个假设完美无限光学平坦的平面(简称光学平面)反射效果,平面两侧的空气和物体有各自的折射率
但实际上,平面大多都不是光学平面(除了镜子或镜头等),而是一种微几何体(Microgeometry),表面都会有一些比可见光波长要大的不规则凹凸,但又小到无法覆盖一个像素或者采样点,所以,我们就把这种非光学平面,理解为一组微小光学平面的集合,而可见光的反射,实际上是在平面各个点上轻微不同方向的反射集合,也就是后面会提到的微平面理论(Microsurface Theory)。
roughness
上面的平面相对平滑时,表面方向的变化也比较轻微,从而反射光的方向变化也较小,有了较清晰的反射。而下面的表面粗糙,表面方向的变化范围也较广泛,反射光的方向变化也比较大,出现了模糊的反射。
两个平面在微观上的粗糙度(roughness)不同导致不同的反射效果
漫反射光与镜面光(diffuse and specular)
这里,我们光和平面交互分为两个项目来描述,从平面直接反射的部分称为镜面反射光(Specular),来源于拉丁语的“Mirror”,PS:镜面光的颜色,通常就是灯光的颜色,只有照射在金属上才会改变颜色(实际是金属吸收了特定波长的光),传入到物体内部,而经过折射,被材质吸收(转变为热能),或者内部进行散射,一些散射光最终会重新返回从平面折射出来,并被摄像机或眼睛所捕捉到,称为漫反射光(Diffuse)。漫反射光被物质吸收并散射后,会成为不同波长的光,这也就给予了物体颜色,比如物体吸收了蓝色以外的光,那物体就是蓝色的,而因为散射的混乱比较均匀,从每个方向看起来都是一样,所以这点和镜面光不一样。也可以使用这个名字albedo来描述。
非光学平面反射(Surface Reflectance)和折射散射(Subsurface Reflectance)的宏观视图,形成了Diffuse和Specular。
金属和非金属材质

物体内部的折射光的作用,取决于物体内部的组成,内部组成的不同,可以分为,金属(metal)导体,电介质(Dielectrics)绝缘体和半导体(Semiconductors ),因为半导体在渲染中出现的机会不多,在处理物体时简单的分组为金属和非金属就可以了。金属会吸收所有的折射光,而且通常会被绝缘体的反射率要高,通常的反射率要达到60%~90%,而绝缘体则是0%~20%,反射率高,就防止了入射光被吸或折射,这样,金属就有了”闪亮“的外观。

金属的折射光能量都立刻被自由电子吸收
而非金属(绝缘体),光会在内部进行吸收和散射活动,最后,一些折射光会通过散射,重新从入射平面反方向射出
非金属的折射光会进行散射
导体的反射会跨越光谱,所以反射是有颜色的,虽然颜色反射在导体里比较罕见的,但在一些日常的材质里(金,铜,黄铜)还是可以看到这种效果,而绝缘体的反射通常是他们的本来颜色,因为金属会吸收所有的穿透光,也就没有任何漫反射(diffuse)部分,但金属氧化的部分和一些表面残留物还是会散射少量的光。也是因为这些原因,可以使用“metalness”(金属度)这种参数,虽然不是纯粹的pbr,但更受美术的喜欢。
不同材质的漫反射颜色,金属为0.
次级表面散射(Subsurface Scattering)
从前面的图中,可以看到折射后的散射光从平面不同的点发射出来,和原始的入射点的距离也各不相同,可以统称为次级表面散射光,根据散射出的距离和入射点像素的大小的关系,可以分为两种情况:
如左图所示,当像素的尺寸大于入射到出射点的距离时,这个距离就可以被忽略,可以认为这个平面散射出的光和入射光是在相同点上,也就是右图的样子,也就是我们常说的漫反射。
当像素小于出射到入射距离时,每个点的着色就会收到其他光入射到其他点的影响,也就是常说的“次级表面散射”技术,很重要的一点是,它和普通的漫反射着色是一种物理现象(都是折射光的次级表面散射),唯一不同的就是散射的距离与观察点大小的关系,一个通常被认为是“次级表面散射”的表现,当在较远的距离观察时,就可以被认为是漫反射着色(例如远距离角色的皮肤),而“正规的漫反射着色”在很近距离观察时,也会有次级表面散射的效果。
无处不在的Fresnel反射
Fresnel表现的是材质的反射率和入射角(也就是光源入射向量和平面法线向量的夹角)的对应关系,也就是说,入射光的角度越大,反射率也会越强,Fresnel反射项通常成为F( )
以水面为例,正常入射事只有3%的反射,而水平时则几乎到100%。
PBR的一个改变,就是对fresnel方程的修正上。这个会在下一篇有公式的章节做进一步解释
对于所以的材质来说,当以掠射角观察时,光滑物体接近“边缘”的地方,会形成完美的镜面,也就是说特定的角度上,“任何表面光滑的物质都可以成为完美镜面”。
除了金属外,大部分的材质的反射和角度对应曲线或梯度的变化都不是很大
 
非金属的反射系数,在边缘处亮度更高
当入射角度为0时,非金属材质(2%~8%),水和液体是2%,砖块8%,其他有机材质和塑料是5%,半导体和晶体是15%~50% 金属60%~90%
如果要达到真实的fresnel,那么美术对fresnel的控制应该越少越好,需要提供一些参数值来使用,通常是光泽度(Gloss,或粗糙度 Roughness)和反射率。提供一个基础反射率,来设置平面最小的反射值,让fresnel曲线从这个最小反射值开始,以满足不同角度的需求。
Surface Reflectance
前文已经提到了微几何体,之所以有微平面的概念,因为从宏观来看,在我们渲染模型网格时,使用法线贴图就可以描述表面小的细节,但这样仍然会有一定的缺失,很多真实世界的平面上,还是有一些微小的凹陷,裂缝或突起,而用肉眼是很难看清楚的,小到连正常大小的法线贴图也无法来表现,虽然肉眼无法看到,但这些微观特征,还是对Diffuse和Specular产生了影响。
微平面的细节,对反射的影响更多,也就是Specular,因为粗糙的微平面会把反射光分散或者内部遮挡,所以有了下面两个项目来描述这个现象
Normal Distribution Function
因为微几何体的所以平面的方向,并不是均匀分布的,如果是分布比较均匀的光滑平面,那么光就会在几乎相同的方向反射,产生清晰的高光,如果粗糙表面则是模糊的高光. 有多少微平面点的法线更倾向宏观平面的法线方向,我们把这种平面法线方向分布的统计,称之为microgeometry normal distribution function D(),和fresenl方程不同的是,D()并没有一个类似0~1的范围,而是来帮助确定微平面法线在某一个给定方向上的集中度。
 
  所以,D()决定了高光的镜面反射高光的大小,亮度和形状,一些D()会提供前面提到的类似"Roughness(粗糙度)"的参数(也可以是glossiness),当粗糙度降低时,微几何体平面的法线方向就会更集中在宏观的平面法线方向上,D()的值也会变高。除了指定粗糙度参数外,也可以通过传递一张Glossn map的方式提供更高的细节。
不同Roughness的表现

左侧Specular Map ,右侧 gloss map
Geometry Function  
因为微几何体的构造缘故,一些入射光的平面点被内部遮挡,成为了内部阴影而无法接受光照(也就不能反射光)。
  
shadowing现象
而有一些反射光被内部遮挡,他们的反射光无法被观察到,虽然有反射光可以多次反弹后再被视点观察到,但在微平面理论里可以忽略不计了。
  
masking现象
这因为有这种现象,所以需要有一个Geometry Function G(),来代表反射光的可见度,所以G()是在0~1之间的一个范围值,在着色模型里,有时会和其他参数合并称为V()(Visiblity)。和D()一样,因为微平面有凹凸感,当它的粗糙度提高时,shadow和masking的现象也会增加,粗糙度高的平面会光滑平面更阴暗一些,G()也要收到roughness参数的影响。另外G()也是下面要讲的能量守恒的一个基础,它使得反射光不会高于平面的入射光。
Energy Conservation 能量守恒
镜面反射光(Specular)与漫反射光(Diffuse)是相互排斥的,因为离开表面的光总量不能他接受的入射光强,你的漫反射与镜面反射综合不能超过1

这意味着,如果你的希望材质有较高的镜面反射效果(高反射率),就需要要去降低漫反射,能量守恒是PBR的一个重要的方法,可以让艺术家在设置反射率和反照率时(高光颜色和漫反射颜色)不会违法物理定律
同一个材质,从100%的漫反射到100%的镜面反射转化过程
能量守恒对高光部分的处理,也称为“Energy Preserving Specular”,通常是在渲染方程里添加Normalization Factor来实现的能力守恒
是否使用Normalization Factor的对比,左下面使用Factor的亮度更淡了一些,因为左上非能力守恒的模型反射了更多的光,而下面能力守恒的模型,高光变得更加明亮和集中。
当把微平面理论引入到着色系统后,那么反射多少光,就要受到平面粗糙度的影响,渲染粗糙度较大的表面时,会获得较大范围和模糊的反射光,而光滑表面的则更清晰。虽然材质都反射相同总量的光,但粗糙平面的会把把反射分散到不同的方向,而光滑平面则反射的更为集中。比如你高光半径提高了10倍,那么暗度将提高100倍。
Gloss的变化的反射效果,Normal Distribution Function(D())也必须是能量守恒所的。

实际应用上漫反射较多而且粗糙的材质,会反射模糊和更广阔的高光,比较光滑而反射率高的材质则反射更明亮和紧凑的高光
理论概述就先到这里,本文也是从很多资料中整理而来,不能算是原创吧,资料太多,可能收集和描述的不够全面,随着后面章节的添加,这个部分应该还会做进一步的修改。

基于物理渲染的基础理论相关推荐

  1. 计算机图形学十四:基于物理渲染的基础知识(辐射度量学,BRDF和渲染方程)

    基于物理渲染的基础知识 摘要 1 为什么需要辐射度量学? 2 辐射度量学 2.1 辐射能量(Radiant energy)和辐射通量(Radiant flux) 2.2 辐射强度(Radiant in ...

  2. Unity3d 基于物理渲染Physically-Based Rendering之最终篇

    前情提要: 讲求基本算法 Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF plus篇 Unity3d 基于物理渲染Physically-B ...

  3. unity3d 基于物理渲染的问题解决

    最近1个月做了unity 次世代开发的一些程序方面的支持工作,当然也是基于物理渲染相关的,主要还是skyshop marmoset的使用吧,他算是unity4.x版本 PBR的优秀方案之一了 但在使用 ...

  4. Real-Time Rendering 4th 译文《九 基于物理渲染(中)》

    9.5.3 内部反射 虽然在渲染中经常遇到外部反射,但内部反射有时也很重要.n1>n2时发生内反射.换句话说,当光在透明对象的内部传播并"从内部"遇到对象的表面时,会发生内反 ...

  5. Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF

    在实时渲染中Physically-Based Rendering(PBR)中文为基于物理的渲染 它能为渲染的物体带来更真实的效果,而且能量守恒 稍微解释一下字母的意思,为对后文的理解有帮助, 从右到左 ...

  6. 零基础学习渲染--PBR(基于物理渲染)

    序:说了几天的Unity,今天回到渲染吧,毕竟图形学才是我的最爱. 看到一个名字PBR,给人高大尚的感觉,下面我和大家一起扫雷,给不了解和想要了解的人学习学习. PBR(Physicallly-Bas ...

  7. 物理渲染-基于物理的光照模型

    http://blog.csdn.net/leonwei/article/details/44539217 文章所用图片来自相关领域文献,如有侵权请联系撤除, 转载本文请注明出处 1.关于光照模型 对 ...

  8. 基于物理的渲染理论基础(PBR渲染)

    基于物理的渲染,通俗一点说就是根据现实环境上光是如何照到物体,然后物体如何把光的颜色反射到人的眼睛的过程,通过渲染表达出来.而游戏中基于物理的渲染就是通过数学公式建模的方式来模拟(只是模拟并非完全准确 ...

  9. 基于物理相机渲染 第一篇 EV light condition(相机曝光值与光照情况关系)

    第一节 基于物理相机曝光方案 一套完善的基于物理渲染的系统要有三部分组成:(1)基于物理的材质(Physically material):(2)基于物理的光照(Physically based lig ...

最新文章

  1. 读了这篇文字,做年薪百万的NLP工程师
  2. Web自动化之Headless Chrome概览
  3. java 报表导出_Java Excel报表导出Demo
  4. Webpack学习-Loader
  5. 存储http请求返回参数_前端学习需要知道的 HTTP 知识(1/7)
  6. JavaScript基础05-day07【条件运算符、运算符优先级、代码块、if语句】
  7. SQL实战篇:SQL优化问题
  8. 董明珠炮轰国产车的创始人不开自己生产的车,事实果真如此吗?
  9. UITableView的重用
  10. 相信自己, 许自己一个未来
  11. 251f与ips屏显示器对比_8百左右预算,2020年PS平面设计/摄影后期显示器推荐/选购指南(全高清+高色域屏)...
  12. JetBrains PyCharm选中内容后Backspace删除无法使用,Ctrl+c/Ctrl+v/Ctrl+s/Ctrl+d等等快捷键无法使用的问题的解决
  13. win10磁盘管理界面各系统分区介绍
  14. spring中的BeanFactory和FactoryBean的区别与联系
  15. EF框架step by step(9)—Code First Fluent API
  16. 在mysql上发布jbpm4.3
  17. xshell以及xftp免费版
  18. 弘辽科技:淘宝评分飘绿四大原因及快速提高评分之解决技巧
  19. 如何下载大同市卫星地图高清版大图
  20. python程序员幽默段子_程序员的十个段子,能看懂的都是深有同感!

热门文章

  1. 游标声明 oracle,Oracle游标声明
  2. php smtp邮件类,php利用smtp类发送邮件
  3. python程序员工作时间_黑马程序员:Python编程之时间和日期模块
  4. c++ map 修改value_哈希表:其实需要哈希的地方都能找到map的身影
  5. Typora+PicGo-Core(command line)+SMMS、github、gitee实现Typora图片上传到图床
  6. rem适配的浏览器_移动端网页布局适配rem方案小结
  7. 负责指挥与控制整台电子计算机,2011秋季计算机应用基础期末考试卷(修改)
  8. 鸿蒙报名什么时候推送,鸿蒙系统手机版什么时候推送?鸿蒙系统手机版推送时间详解...
  9. android点击出现菜单,Android 点击按钮弹出菜单
  10. 集合詳細學習 包括Vector ArrayList List等等的比較與實例