【技术美术】光照模型

【技术美术】光照模型

光照模型实际就是用于计算光照效果的方法,发展至今已有多种光照模型可用。

光照类型

从来源分类

  • 直接光:直接来自光源的光。
  • 间接光:通过其他表面反射的光。

从组成分类:

  • 漫射光:光在粗糙的表面进行多次反射后再反射进眼睛的光。
  • 镜射光:光在光滑表面进行一次反射后直接反射进眼睛的光。
  • 环境光:从其他物体表面反射的光照在物体上后再反射的光。
  • 次表面散射:光通过一些半透明的物体内部后再反射进眼睛的光。

光照模型类型

从计算范围分类

  • 局部光照模型:只计算直接光,或环境光等直接打在物体上的光照效果。
  • 全局光照模型:在局部光照模型基础上,还会考虑光折射反射后打在物体上的效果。

从计算原理分类

  • 经验模型:基于人们对光照现象的直观感受,用经验编写的公式来模拟光照。
  • PBR 模型:基于物理的渲染方式(Physically-Based Rendering),这类模型基于真实的物理现象和公式演化而来。相较经验模型,拥有更真实的呈现效果和物理正确性。

从着色风格分类

  • Gouraud:为每一顶点计算光照,再通过插值的方式得出最终效果。

从函数类型分类

  • BRDF(双向反射分布函数):

    用于计算入射光与反射光关系的函数,即计算漫射光和近射光等从物体表面直接反射的光的函数。是常见游戏引擎中所使用的利用光栅化计算的光照模型。

  • BTDF(双向投射分布函数):

    用于计算入射光与投射光关系的函数,即计算透过物体内部再折射出的光(次表面散射)的函数。

  • BSDF(双向散射分布函数):

    BRDF 和 BTDF 的超集,是既计算反射光也计算折射光的函数。是常见图形软件中烘焙灯光时所使用的光照模型。

主流光照模型

Lambert

https://en.wikipedia.org/wiki/Lambertian_reflectance

1760 年提出,是只考虑了漫射光的简单模型,其通过点乘模拟漫射强度的思想,奠定了后续光照模型的基础。

Phong

https://en.wikipedia.org/wiki/Phong_reflection_model

1975 年提出,是一个完整的局部光照模型,在 Lambert 的基础上还考虑了环境光和镜射光。

BlinnPhong

https://en.wikipedia.org/wiki/Blinn–Phong_reflection_model

一个改进版的 Phong 模型,对其镜射光的计算方式进行了调整,有更高的计算效率和高光效果,是过去很多图形接口的内置光照模型。

CookTorrance

https://graphicscompendium.com/gamedev/15-pbr

1982 年提出,相比前几代的经验光照模型,由于其是基于真实物理现象设计(PBR 模型),因此拥有更真实的呈现效果和物理正确性,如今更是被广泛使用。

Unity 中对于该公式的镜射系数的实现:

https://community.arm.com/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-00-20-66/siggraph2015_2D00_mmg_2D00_renaldas_2D00_notes.pdf

D=roughness2((nh)2(roughness21)+1)2VF=1(lh)2(roughness+0.5)specular=DVF4=roughness2((nh)2(roughness21)+1)2(lh)2(roughness+0.5)4

posted @   BDFFZI  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示