【Unity】ShaderLab-2_1-基础光照模型-理论

历史普及:1975年,著名学者裴祥风(Bui Tuong Phong)提出了标准光照模型背后的基础概念。

                 标准光照模型只关心直接光照,也就是那些直接从光源发射出来照射到物体表面后,经

                 过物体表面的一次反射直接进入摄像机的光线分为四个部分:自发光、高光反射、漫反

                 射、环境光。

声明       :最终支持产权,本文部分内容出自《UnityShader入门精要-冯乐乐》,值得推荐的入门书籍。

全局注释:

    -C_*  :Color_*

    -M_* :Material_*


1. 环境光(ambient)

    理论 : 在Unity中我们使用一种被称为环境光的部分来模拟间接光照,它是一个全局变量。

    公式 : C_ambient = G_ambient(UNITY_LIGHTMODEL_AMBIENT.xyz)


2. 自发光(emissive)

    理论 : 由于没有使用全局光照技术(global illumination)技术,这些自发光不会真的照亮周围物体

                光源直接摄入摄像机,不需要经由任何物体反射

    公式 : C_emissive = M_emissive


3. 漫反射(diffuse) 

    理论 : 兰伯特定律:反射光线的强度与表面法线和光源方向之间家教的余弦值成正比

    公式 : C_diffuse = (C_light M_diffuse)max(0,n·l)

n - 表面法线
l - 只想光源的单位矢量
M_diffuse - 材质的漫反射颜色
C_light         - 光源颜色


4. 高光反射(specular)
       
    理论 1 : Phong模型:反射光线的强度与表面法线和光源方向之间家教的余弦值成正比
       

    公式 1 :C_specular = (C_light M_specular)pow(max(0,v·r),M_glass)

     M_glass - 材质的光泽度(反光度)
  C_light         - 光源颜色和强度
  v - 视角方向
  r - 反射方向


    理论 2 : Blinn模型:为避免计算反射方向 r,引入新的 h = (v+l)/(|v+l|)
       

    公式 2 :C_specular = (C_light M_specular)pow(max(0,v·h),M_glass)

  M_glass - 材质的光泽度(反光度)
  C_light         - 光源颜色和强度
  v - 视角方向
  h - v 和 l 平均后再归一化得到

结语:后续文章中会更新各种光照模型

猜你喜欢

转载自blog.csdn.net/qq_33479009/article/details/80518371