Lambert光照模型

简介#

基础的反射模型

漫反射#

漫反射,是投射在粗糙表面上的光向各个方向反射的现象。当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同的方向无规则地反射,这种反射称之为“漫反射”或“漫射”。这种反射的光称为漫射光。

特点:

  • 光照强度与观察角度没有关系
    从各个角度观看灯光时,它都具有相同明显的强度

  • 光照强度跟灯光的入射角有关系
    如果改变光的入射光方向可以看到模型表面的光照强度发生了变化

兰伯特余弦定理#

在光学中,朗伯的余弦定律说,从理想的漫反射表面或理想的漫射辐射体观察到的辐射强度或发光强度与入射光的方向与表面法线之间的夹角θ的余弦成正比。该定律也称为余弦发射定律或兰伯特发射定律。它以约翰·海因里希·兰伯特(Johann Heinrich Lambert)的名字命名,来自他于1760年出版的《Photometria》。

image-20210318163049171

计算方程:

Id=kdmax(0,nl)Ld0kd1

  • 漫反射亮度受光线入射方向l与单位表面的法线n夹角影响
  • ln的夹角的影响,夹角为0时光照最亮,夹角为90度时无光照
  • 如果nl<0,代表光照方向和法线方向相反,此时不做光照处理:max(0,nl)

Half Lambert光照模型#

反射光线强度 = 入射光线颜色 * 漫反射颜色 * (0.5 * ( 法线方向 · 光源方向 ) + 0.5)

该光照模型是由Valve公司开发《半条命》时提出的,是一种用于低光照区域照亮物体的技术。

由前面的兰伯特公式我们知道一旦入射光向量与材质表面的角度大于90度,那么得到的漫反射颜色就会全部变为黑色,没有任何明暗变化效果!

半兰伯特是将n·l得到的结果加工,通常是先乘以0.5,然后再加上0.5,这样就将光照值从(1,1)重新映射到了(0,1)

常见四种光照模型对比#

相关链接#

Lambertian_reflectance

Lambert's cosine law

Lambert Shader.glsl

PDF

http://www.cs.cmu.edu/afs/cs/academic/class/15462-s10/www/lec-slides/lec11.pdf

http://www.cs.cornell.edu/courses/cs4620/2010fa/lectures/09shadingBasics.pdf

https://www.cse.usf.edu/~r1k/MachineVisionBook/MachineVision.files/MachineVision_Chapter9.pdf

https://hal.inria.fr/hal-01919501/document

https://lambertetfils.com/wp-content/uploads/2017/11/Beaubien-Simple-Shade.pdf

Blog

Unity Shader 入门 (5) | 半兰伯特、高光反射、BlinnPhone

posted @   straywriter  阅读(1001)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩