首页 > 计算机图形学 > Shader > Shader漫反射
2022
01-14

Shader漫反射

定义

漫反射,是投射在粗糙表面上的光向各个方向反射的现象。当一束平行的入射光线射到粗糙的表面时,表面会把光线向着四面八方反射,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同的方向无规则地反射,这种反射称之为“漫反射”或“漫射”。这种反射的光称为漫射光。很多物体,如植物、墙壁、衣服等,其表面粗看起来似乎是平滑,但用放大镜仔细观察,就会看到其表面是凹凸不平的,所以本来是平行的太阳光被这些表面反射后,弥漫地射向不同方向。

Shader漫反射 - 第1张  | u3d8技术分享

光照模型

效果

Shader漫反射 - 第2张  | u3d8技术分享

兰伯特光照模型(Lambert)

公式

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

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

示例

https://zh.numberempire.com/graphingcalculator.php?functions=cos(x)&xmin=0&xmax=3.14&ymin=-1&ymax=1&var=x

半兰伯特光照模型(Half Lambert)

公式

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

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

示例

https://zh.numberempire.com/graphingcalculator.php?functions=cos(x)%20*%200.5%20%2B%200.5&xmin=0&xmax=3.14&ymin=-1&ymax=1&var=x

顶点计算/片元计算

示例使用的是兰伯特光照模型

效果

Shader漫反射 - 第3张  | u3d8技术分享

逐顶点漫反射

逐像素漫反射(逐片元漫反射)

区别

  • 逐顶点计算:顶点数量少,所以计算量少,性能会高,不在顶点位置像素会根据差值计算,效果会差
  • 逐片元计算:片元会每个像素点计算,计算量多,性能稍差,但更平滑
最后编辑:
作者:网虫虫
网虫虫
分享是一种快乐; 分享是一种美德; 分享是一种幸福!

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

[…] Shader漫反射 […]