首页 > 计算机图形学 > Shader > Shader常见光照模型
2022
01-18

Shader常见光照模型

常见的光照模型有以下几种

  • Lambert(兰伯特)
  • Half Lambert(半兰伯特)
  • Phong
  • Blinn Phong

Lambert(兰伯特)

粗糙的物体表面向各个方向等强度地反射光的现象叫作漫反射,产生这种现象的表面体称为理想漫反射体(Lambert 反射体)。

Shader常见光照模型 - 第1张  | u3d8技术分享

公式

漫反射Diffuse = 平行光颜色 * max(0, 平行光方向·法线方向)

漫反射Diffuse = 平行光颜色 * max(0, cosθ)

教程

Half Lambert(半兰伯特)

Half Lambert 基于Lambert模型,是为了让整体趋向更亮,减少暗部区域

公式

漫反射Diffuse = 平行光颜色 * (平行光方向·法线方向 * 0.5 + 0.5)

漫反射Diffuse = 平行光颜色 * (cosθ * 0.5 + 0.5)

教程

Phong

物理世界的某些物体看起来并不会像 Lambert 光照模型描述的那样简单。比如光滑的金属表面被光照射时,某一点处会有很强的反射光(肉眼可见的光斑)。这是因为在接近镜面反射角的某个区域内,反射了入射光的大部分光强,这种现象称作镜面反射(高光反射)

在镜面反射中相对于漫反射增加了一个观察角度,Phong 光照模型就是基于光照的方向和用户的视角方向进行计算的

Shader常见光照模型 - 第2张  | u3d8技术分享

公式

高光反射Specular = 直射光 * pow(max(0, cosθ), 高光反射参数)

θ = 反射光方向和视野方向的夹角

教程

Blinn Phong

Blinn 是基于Phong模型,一种高效计算和模拟高光的方式,它是通过视角方向和光线方向构成的半角向量完成的。BlinnPhong 光照模型则是混合和了 Lambert 的漫反射和 Blinn 计算高光的模式,渲染有时比 Phong 高光更柔和、更平滑,此外它的处理速度相当快

Shader常见光照模型 - 第3张  | u3d8技术分享

公式

Specular = 直射光 * pow(max(0, cosθ), 高光反射参数)

θ = 法线和h的夹角

h = 平行光与视野方向的平分线

教程

最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

0 0 votes
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments