笔记一 标准光照模型

标准光照模型进入摄像机的光线分为4部分:环境光(Ambient)、漫反射(Diffuse)、高光反射(Specular)、自发光(Emissive)。每部分使用一种方法计算其贡献度。

1. Ambient

即使在黑暗环境下,世界上通常也仍然有光源(月光,远处的光),所以物体几乎完全不会黑暗。为了模拟这这个, 近似模拟间接光照,简化计算。通常为全局变量。

2. Diffuse

折射、反射。 模拟光源对物体的方向性影响(Directional Impact)。

漫反射光照符合兰伯特定律:反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比。

3. Specular

模拟有光泽物体上面出现的亮点。镜面光照的颜色相比于物体的颜色会更倾向于光的颜色。

高光反射可以让物体看起来有光泽,比如:金属质感、巧克力豆质感。

4. Emissive

通常在实时渲染中,自发光的表面往往不会照亮周围的表面,即:这个物体不会被当成一个光源。

标准光照模型中,通常至少有三种光照分量相加,既 Ambient + Diffuse + Specular 得到当前颜色值。

计算公式:

1. Amdient

                        I = Iamdient Kalbedo

        Iamdient是环境光强,Kalbedo为物体对环境光的反射系数。

2. Diffuse

兰伯特定律(Lambert):垂直照向平面的线比从侧面照向平面的线更加强烈。

        这里写图片描述

                        Cdiffuse = (Clight * Mdiffuse)max(0, (n·L))

                n 表示法线方向 (归一化)

                L 表示光源方向 (归一化)

                Clight 表示光源颜色

                Mdiffuse 表示材质的漫反射颜色

                n·L  点积

                为防止法线和光源方向点积结果为负值,这里使用max函数。

半兰伯特定律:半兰伯特是没有任何物理依据的,仅仅是一个视觉加强技术。

                        Cdiffuse = (Clight * Mdiffuse)(0.5 * (n·L) + 0.5)

3. Specular

Phong模型  -  冯氏光照模型(Phong Light Mode)

计算高光反射需要知道:表面法线(n)、视角方向(v)、光源方向(I)、反射方向(r),这里的矢量都需要是单位矢量。

        

                       Cspecular = (Clight * Mspecular)pow(max(0,(v·r)), Mgloss)

                Mgloss 表示材质的光泽度,也称为反光度,用于控制高光区域的“亮点”有多宽,这个值越大,亮点越小;

                Mspecular 表示材质的高光反射颜色,用于控制该材质对高光反射的强度和颜。

                Clight 表示光源的颜色和强度;

                n 表示法线方向 (归一化)

                I 表示光源方向 (归一化)

                r = 2(n·I)n - I 

                v 视角(摄像机)方向 (归一化)

Blinn-Phong模型

在Phong模型基础上,Blinn简化了计算:用新的矢量 h 来代替反射方向 r , h 是通过对 v 和 I 取平均后再归一化得到的:

        

                        Cspecular = (Clight * Mspecule)pow(max(0,(n·h)),Mgloss) 

                h = (v + I)/(|v + I|)  (归一化)因为此时可以认为单位 v 矢量和单位 I 矢量都是定值,因此 h 是一个常量;但是当单位 v 矢量和单位 I 矢量不是定值时,Phong模型会更快。

4. 斯涅尔折射

        斯涅尔定律:  折射

                \eta1sin\theta1 = \eta2sin\theta2

        \eta1 和 \eta2 分别是介质的折射率。真空的折射率为1, 玻璃的折射率为1.5

5. 菲涅尔反射

        菲涅尔反射描述了一种光学现象。

        Schlick菲涅尔近似等式:

                

                F0是一个反射系数,用于控制菲涅尔反射的强度。

                v 是视角方向

                n 是表面法线 

        Empricial菲涅尔近似等式:

                

                 

读: 《Unity Shader入门精要》 - 冯乐乐

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值