一.PBR是什么?

Physically Based Rendering:基于物理的渲染

PBR:是一套框架,通过PBR保证整体的色调以及画面的统一

什么是基于物理渲染?

对现实世界中的一种近似,而不是真实的物理渲染

<1>.完整的PBR框架

(1)基于物理的材质(Material)

(2)基于物理的光照(Lighting)

(3)基干物理适配的摄像机(Camera)

(4)美术的pbr全流程

<2>满足物理渲染的三个条件:

(1)基于微平面(Microfacet)的表面模型

(2)能量守怛

(3)应用基于物理的BRDF

(1)微平面理论

概念:将物体表面建模成做无数微观尺度上有随机朝向的理想镜面反射的小平面(micoracet)的理论

镜面反射

作用:描述粗糙表面和光滑表面的区别

(2)能量守恒

概念:出射光线的能量永远不能大于入射光线的能量(光线照射到表面上的时候部分光线,会被射出去或者透射出去,还有部分光线,会在物体内部消耗了转换为其他的能量)

能量守恒的实现:

  1. 使用反射率方程

  1. 公式:

3.概念:

入射光的衰减:半角向量和法线的点积

入射光的强度*反射比例*入射光的衰减=反射光的强度

自发光强度+反射光的强度=最终出射光的强度

其中:

<1>入射光的强度是一个已知的值

<2>入射光的衰减和入射光与平面的角度有影响

<3>反射比例使用BRDF来求

(3)BRDF(Bidirectional Reflectance Distribution Function)-双向,反射,分布,函数

(1)BRDF包含两个部分:

光线打到平面上形成的散射和高光反射

散射:从各个角度看过去,光的强度都是差不多的

高光反射:只有特定的角度才能看到明显光斑

(2)BTDF(Transmitted Scatter Distribution)双向透射

也包含散射和高光反射

(3)BSDF 双向散射分布函数

BRDF+BTDF=BSDF

双向:相机方向和光源方向或调换之后他们的等级力量是一致的

根据微平面理论和能量守恒理论可以理解为:

在光线强度一定的情况下,越粗糙的表面,反射的区域越大,相应的亮度也会降低(但是总的反射的能量都是比较均衡的,是一个此消彼长的一个过程)

BRDF的具体计算

根据入射光的方向:(点到光源的方向) 和 出射光的方向:(点到摄像机的方向)来技术反射比例

(1)把反射分为漫反射和高光反射

扩散(漫反射):

采用兰伯特光照模型:光源方向与平面的角度越垂直他的强度会越大,与平面越平行越小它的强度就会越小

兰伯特光照模型

漫反射公式

1.kd漫反射系数(跟高光反射系数相加为一)

2.光照强度:除了受角度影响还受光源方向到平面的距离的影响-距离的平方成一个反比的关系,距离越大光的强度就会越小

3.n-法线,l-光源方向

法线点乘光源方向,计算光源是否是垂直于这个平面的,垂直的的时候,点乘结果为一,那它就是一个最大的,如果越平行,他就越趋近于零,就会有一个衰减过程,如果法线方向和光源方向相反,点乘结果为负数,就没有意义(最小取零)

<1>漫反射

一.Phong模型

Phong

视角方向越贴近于反射方向时,得到的高光就强度就会越大

Phong

二.Blinn-Phong

Blinn-Phong是半角向量与法线方向的计算

半角向量:视角方向和光源方向的对角线

Blinn-Phong

如果视角方向与反射方向一致,那么半角向量和法线方向一致

(1)法线是反射和入射光的对角线

(2)半角向量是视角方向与光源方向的对角线

总结:

(1)半角向量越接近于法线向量时就说这个夹角越小那么得到的光强就会越大

(2)Blinn-Phong法线对反射比例(光衰减)的影响

(2)Blinn -Phong模型是对一个Phong模型的近似

(3)Blinn-phong模型相对Phong模型更省一点

Blinn-Phong

Blinn-Phong和Phong都是经验光照模型

<2>基于物理的高光反射

反射率方程:

反射率方程

(1)反射率方程的自发光去掉,只看反射部分,其他部分都是不变的(一个入射光强度,角度的衰减,变的部分就是反射率)

Cook-Torrance反射率方程

中文方程

蓝色部分是BRDF的核心算法, BRDF前面部分是漫反射,我们采用是兰伯特光照模型对他进行一个计算

前面部分kd用的Lambert.

(1)kd:漫反射比例

(2)c:纹理颜色

(3):圆周率

(4)ks:镜面反射比例(kd+ks=1)

(5)wo:视角方向

(6)n:法线方向

(7)wi:光源方向

(8)DGF:高光反射部分,其中DGF分别是三个函数,n表示粗糙度

D:法线分布函数(Normal Distribution Function ,NDF)

G:几何(遮蔽)函数

F:菲涅尔方程

DGF

(1).D(h)法线分布函数(Normal Distribution Function, NDF)

概念:描述微面元法线分布的概率,即正确朝向的法线的浓度。即具有正确朝向,能够将来自l的光反射到v的表面点的相对于表面面积的浓度。

法线分布函数

  • a:粗糙度

  • h:半角向量

  • n:法线向量

GGX和Blinn-Phong的对照

GGX的法线分布函数,在末尾会更延长一些

绿色曲线为GGX的法线分布函数

顶端是比较尖锐的而在末端是更绵长的而实验数据也证实了GGX是跟接近于物理现状的

(2).G(l,v,h)几何(遮蔽)函数

概念:描述微平面自成阴影的属性

我们是使用微平面理论,也就是说每个面单独计算互不干扰,而不会让两个面之间会存在相互遮蔽的关系但这种遮蔽关系是在线中确实存在的

图中一束光线照射过来,在该图片上进行了反射,而由于前面的平面对他进行遮挡以至于光线无法到达人眼

几何函数从统计学上近似的求得了微平面间相互遮蔽的比率.这种相互遮蔽会损耗光线的能量。(除了被吸收,还有被自身遮蔽带来的能量损耗)

几何遮蔽函数

v(G1):任意方向

n(G):法线方向

L:光线方向

V:视角方向

h:半角方向

公式理解:入射光方向以及视角方向产生了一种衰减,衰减的算法:方向与法线方向的点乘,还要平滑度对他的影响

总结:一个比较粗糙的物体,相互遮蔽对光线进行损耗的也就越高

使用史密斯法与Schlick- GGX作为Gsub可以得到如下所示不同粗糙度的视觉效果

0:没有微平面阴影1:微平面彻底被遮蔽

总结:在光线在几何遮蔽函数开启的时候,光线方向与视角方向比较平行的面也就说角度比较小的面它是相较于之前是暗了

(3).F(l,h)菲涅尔方程(Fresnel Equation)

概念:描述不同的表面角下所反射的光线所占的比率。(物体的边缘,会更加亮)

也就是说垂直看过去的时候,他的光强会比你看他,边缘的掠射角的时候会暗很多

菲涅尔方程

  • F0:平面基础反射率(大多数常见电介质的FO范围为0.02-0.05(线性值)。对于导体,FO范围为0.5-1.0)

  • h:半角向量

  • v:视角方向

<1>.1-(h*v):兰伯特算法中有类似的操作不过菲涅尔中,用来一减取了一个相反值,之前是边缘暗中间亮,现在菲涅尔算法中是中间暗边缘亮

<2>.F0(平面基础反射率):一个视点一个面你垂直看下去,他依然还会有一点的反射而不是百分百就成零的,从式子中可以看到,如果他的从垂直看上去得出结果是一,一减去一得零,乘以多少让他的反射都为零,但实际生活中我们知道他垂直看上去也是有一定反射的所以说这里要对他加一个F0

菲涅尔效果

最终实现的效果大概,会如图像所示,在边缘,它会很亮,而在中间部分,它会相较会暗很多反射率会低一些

有菲涅尔反射和没有菲涅尔反射的区别:

效果对比

是如何形成这种现象的,从下面的图中可以看出:

蓝色区域与平面的角度α,比红色线这一条它的b角度是要小一些的,也就是说同样的一个视角位置,

看上去另一个地方视角角度越小,与平面夹角越小,那他们反射的比例,也就越高,也就看得越清晰,红色这边因为角度比较大,看的话就会越模糊。

(4)分母4(n·l)(nv)︰校正因子(correctionfactor)

概念:作为微观几何的局部空间和整个宏观表面的局部空间之间变换的微平面量的校正。

迪士尼原则的BRDF

0.艺术导向(Art Directable ) ,并不一定物理正确( Physically Correct )

1.立使用直观的参数,而不是物理类的晦涩参数

2参数应尽可能少

3.参数在其合理范围内应该为0到1

4.允许参数在有意义时超出正常的合理范围

5.听有参数组合应尽可能健壮和合理

Disney Principled BRDF参数

迪士尼动画工作室用了11个参数即可非常真实地模拟出金属、非金属以及不同粗糙度的材质光照结果:

  • baseColor(基础色)︰表面颜色,通常由纹理贴图提供。

  • subsurface(次表面)︰使用次表面近似控制漫反射形状。

  • metallic(金属度)︰金属(0=电介质,1=金属)。这是两种不同模型之间的线性混合。金属模型没有漫反射成分,并且还具有等于基础色的着色入射镜面反射。

  • specular(镜面反射强度)︰入射镜面反射量。用于取代折射率。

  • specularTint(镜面反射颜色)∶对美术控制的让步,用于对基础色(base color)的入射镜面反射进行颜色控制。掠射镜面反射仍然是非彩色的。

  • roughness(粗糙度)︰表面粗糙度,控制漫反射和镜面反射。

  • anisotropic(各向异性强度)︰各向异性程度。用于控制镜面反射高光的纵横比。(0=各向同性,1=最大各向异性)

  • sheen(光泽度)︰一种额外的掠射分量(grazing component),主要用于布料。

  • sheenTint(光泽颜色)︰对sheen(光泽度)的颜色控制。

  • clearcoat(清漆强度)︰有特殊用途的第二个镜面波瓣(specular lobe)。

  • clearcoatGloss(清漆光泽度)︰控制透明涂层光泽度,0=“缎面(satin)”外观,1= “光泽(gloss)”外观。

参考文献

技术美术101PBR部分

毛星云老师的白皮书

基于迪士尼原则的Filament

PBR (Physically Based Rendering)概念篇相关推荐

  1. Physically Based Rendering——史上最容易理解的BRDF中D函数NDF的中文资料

    粗糙度决定了D函数的分布,一般粗糙度是D函数的方差 本文假定读者已经对PBR即Physcially Based Rendering 基于物理的渲染有了初步的了解,对于PBR的入门有很多文章都介绍的不错 ...

  2. opengl-PBR基于物理的渲染(Physically Based Rendering):理论基础

    PBR文档链接 PBR-learnOpengl官方文档 理论基础 PBR概念 PBR基于物理的渲染(Physically Based Rendering),它指的是一些在不同程度上都基于与现实世界的物 ...

  3. Physically Based Rendering,PBRT(光线跟踪:基于物理的渲染) 笔记

     提起PBRT(Physically Based Rendering: From Theory to Implementation)这本书, 在图形学业界可是鼎鼎大名, 该书获得2005年软件界J ...

  4. AMD Cubemapgen for physically based rendering

    JUNE 10, 2012 57 COMMENTS Version : 1.67 – Living blog – First version was 4 September 2011 AMD Cube ...

  5. Article - Physically Based Rendering

    http://www.codinglabs.net/article_physically_based_rendering.aspx Radiance 辐射率--用L表示 Irradiance 辐照度 ...

  6. Physically Based Rendering阅读

    关于3D渲染方面很好的一本书. 下面是它的官网, http://www.pbrt.org/index.html 以下是详细记录阅读的笔记,习题也需要做. 书本上的例子在 https://github. ...

  7. Learn OpenGL 笔记7.1 PBR Theory(physically based rendering基于物理的渲染 理论)

    PBR,或更通常称为基于物理的渲染,是一组渲染技术,它们或多或少基于与物理世界更接近的相同基础理论.由于基于物理的渲染旨在以物理上合理的方式模拟光线,因此与我们的原始光照算法(如 Phong 和 Bl ...

  8. 【《Unity 2018 Shaders and Effects Cookbook》翻译提炼】(九)Physically - Based Rendering

    制作过程中最重要的方面时效率,实时着色很昂贵,而Lambertian或BlinnPhong等技术是计算成本和现实之间的折中. 拥有更   强大的GPU允许我们逐步写更强大的光照模型和渲染引擎,目的是模 ...

  9. PBR:基于物理的渲染(Physically Based Rendering)+理论相关

    一: 关于能量守恒 出射光线的能量永远不能超过入射光线的能量(发光面除外).如图示我们可以看到,随着粗糙度的上升镜面反射区域的会增加,但是镜面反射的亮度却会下降.如果不管反射轮廓的大小而让每个像素的镜 ...

最新文章

  1. Chapter 7. 对话框控件
  2. sql中的text字段如何导入oracle
  3. 数据库和缓存的双写一致性问题
  4. Google Chrome Frame
  5. muduo网络库学习(三)定时器TimerQueue的设计
  6. Hibernate中的inverse属性和cascade属性
  7. 上传项目到gitHub,上传报错和删除gitHub上的项目
  8. linux ip端口配置文件,Linux /etc/network/interfaces配置接口方法
  9. OSG模拟鼠标事件影响操纵器
  10. 接口应用:内部比较器Comparable
  11. 将网页以页面仅html,不用JS,教你只用纯HTML做出几个实用网页效果
  12. android伸缩动画,Android 伸缩动画xml配置
  13. ORACLE 11g r2   RAC 安装实施规划
  14. 几种常用的键盘钩子技术
  15. CISCO PIX/ASA K8升级K9的方法与步骤
  16. 苹果电脑怎么进入安全模式教程
  17. TRIZ 40创新原理
  18. 内后视镜和外后视镜哪个显示真实距离?
  19. 风火牙疼,紧急止痛、快速治疗的真实历程
  20. nginx 404及5xx页面配置

热门文章

  1. HBase RowKey与索引设计【精彩演讲PPT】
  2. early-z、z-culling、hi-z、z-perpass是什么
  3. 计算机MS Office二级考试记录
  4. NotePad++添加到右键快捷方式
  5. 重装上阵服务器维护,《重装上阵》更新公告
  6. 5GC移动性管理(5GS mobility management ,5GMM)
  7. Android多媒体开发(5)————利用Android AudioTrack播放mp3文件
  8. Unity3D切换贴图
  9. PSobj [9] 这几天补了一下基础知识 放一些练习
  10. 2019,还是我太懒了,结果微信公众号被冻结。2020csdn重新起航