【Unity Shader入门精要学习】基于物理的渲染(一)

基于物理的渲染一(PBS)

光线和某一介质接触之后一般会发生两种情况,一个是反射,而另一个就是折射。光线到底被反射多少是由菲涅耳等式( Fresnel equations)决定。

image.png

而我们可以认为现实世界中,光滑的平面并不是真的光学平滑,而是有很多的细小微平面组成,微平面越凹凸不平则物体表面就越粗糙,否则表面就越光滑。因为越光滑法线变化越小,反射的光越集中,高光现象就越明显,反之法线变化越大,反射的光就越发散,高光现象就越不明显,高光就越模糊。


微平面

一、表面反射

表面反射就是指光线经过介质的折射一部分会进入介质内部,一部分会反射介质外部,被反射出来的就是表面反射,而具体反射多少,是由菲涅尔等式来描述。在渲染中,表面反射对应的就是高光反射

反射

二、次表面散射

一些光被折射进介质内部后,又会被散射出来,而被散射出去的光就是次表面散射光。金属材质具有很高的吸收系数,因此,所有被折射的光往往会被立刻吸收,被金属内部的自由电子转换为其他能量。而非金属材质往往具有吸收和散射两种现象。也就是次表面散射光

散射

但是散射出去的光的位置有多种情况,既可能离射入点很近,也有可能很远。所以数学建模的时候会有两种情况。如果离得近并小于一个像素的大小,那么渲染就可以在局部进行,如果离得远则需要使用次表面散射渲染技术
这篇内容建立在忽略次表面散射距离的基础上,只是用局部渲染。
次表面散射距离

三、渲染方程

而如何使用数学模型来描述上面所提到的光照模型,也就是对光这个抽象概念进行量化,可以使用辐射率来量化光。辐射率是指单位面积,单位方向上光源的辐射通量。通常使用L表示。而在渲染中,通常会使用入射光线辐射率Li来计算出射光线的辐射率Lo,这个过程往往也被成为着色。也就是有了渲染方程

渲染方程

其中Le(v)是自发光的辐射率,dw可以被认为是某条光线,f(w,v)就是某条光线在观察方向上射出的百分比,也就是权重,Li(w)是有效入射光线的辐射率,(n·w)就是光线在法线上的投影。
渲染方程的解释

这个方程可以从右向左来解释:
某一光线×它在某个方向上的投影(也就是衰减)
×对应的入射光辐射度×在观察方向上射出的权重。它们在180度方向上的积分(求和)+自发光辐射率。
而去掉渲染方程中的自发光项,就会变成反射等式( Reflectance Equation)。而在实时渲染中,自发光往往都是直接加上对应的光源即可。

四、精确光源

在实时渲染中,累加部分,也就是积分,基本无法实现,所以往往会使用若干精确光源叠加的方式来代替,而不是计算入射光线整个半球上的积分。
所以使用精确光源来近似模拟这些光源。也就是经常使用的平行光,点光源,聚光灯。这些光源被认定为大小无限小且方向确定。公式:

近似公式

其中l为光的方向,c为光的颜色,v是观察方向。相比积分操作,这里使用一个特定方向的f(l,v)值来代替积分,这样简化了操作。如果是多个光源,就把对应的光源叠加求和即可:
多个光源叠加

五、BRDF(Bidirectional Reflectance Distribution Function)双向反射分布函数

在近似光源的公式中,只剩下f(l,v)未知,它代表在给定入射光的方向的情况下,有多少百分比的光会被反射到观察方向,它有个专门的名字:双向反射分布函数(BRDF)
顾名思义,双向就意味着有两个方向:f(I,V),其中I是入射方向,V是观察方向。如果沿着法线旋转不影响BRDF的结果,那么这种BRDF被称为各向同性的BRDF,如果结果不一样就是各向异性的BRDF。
BRDF的理解就是当一束光沿着入射方向I到表面某个点时,f(I,V) 表示了有多少部分的能量反射到了观察方向V上。
BRDF决定了整个着色过程是不是基于物理的,这可以用BRDF是否满足两个特性来判断:
是否满足交换律能量守恒
交换律要求当交换lv之后,BRDF的值不变,即:f(l,v)=f(v,l)
能量守恒则要求表面反射的能量不能超过入射的光能,即:

能量守恒

BRDF可以描述两种不同的物理现象:表面反射次表面散射
用于描述表面反射的部分叫做高光反射项,用于描述次表面散射的部分叫做漫反射项
image.png

如何得到BRDF呢?一种情况是使用精确的光学仪器在真实的物理世界测量,根据所得到的数据进行数学建模。但真实世界的光照非常复杂,很难有一个BRDF可以满足所有材质。下面给出常见的BRDF的高光反射项漫反射射项
Disney BRDF

六、漫反射项

经常使用的是Lambert模型,就是最简单也是最广泛的BRDF:

Lambertian BRDF

其中cdiff表示漫反射光线所占的比例,通常也被称为漫反射颜色(diffuse color)。 与我们使用Lambert光照模型的不同的是这里的f(l,v)是一个定值,还缺少一个余弦因子(n· l),但实际(n· l)是反射公式的一部分,而不属于BRDF。之所以要除以π是因为假设漫反射在各个方向上的强度都是一样的。同时BRDF要求在半球内的积分值是1,所以在给定入射方向l的光源在某表面的出射漫反射辐射率为:
漫反射辐射率

这样看右侧的公式就和我们经常使用的Lambert光照模型差不多了。
但实际的世界中很难有这种完美均匀的散射,根据真实的BRDF分析发现,很多材质在掠射角表现出了的明显的高光反射,而且还与表面的粗糙程度有着很大关系。粗糙表面在掠射角容易出现亮边,光滑的表面在掠射角会形成一条阴影。而这些实际情况是无法使用现有的Lambert光照模型体现出来的。
菲涅尔

http://filmicworlds.com/blog/everything-has-fresnel/
这篇文章写的很详细,什么是菲涅尔现象。

所以很多基于物理的渲染会选择使用更加复杂的的漫反射项来模拟更加真实的次表面散射的结果,如Disney BRDF

Disney BRDF

其中baseColor是表面颜色,一般通过纹理采样得到,roughness是表面粗糙度。这个公式既考虑了掠射角的反射的情况,也考虑了粗糙度对漫反射的影响。Disney使用了Schlick 菲涅耳近似等式来模拟掠射角的反射变化,同时使用粗糙度进一步修改它,这使得光滑材质在掠射角也可以有明显的的阴影边。
菲涅尔近似式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345