Unity中的基础光照
标准光照模型
Phong光照模型
c = cmissive + cspecualr + cdiffuse + cambient
- cambient:环境光。在标准光照模型中,我们使用环境光来模拟那些经过多个物体反射进入摄像机的间接光照。
- cmissive:自发光。由光源直接发射进入摄像机的光线。
- cdiffuse:漫反射。被物体表面随机散射到各个方向的光线。

cdiffuse = (clight · mdiffuse)max(0, n·I)
clight是光源颜色, mdiffuse是材质的漫反射颜色,n是表面法线,I是指向光源的单位矢量。 - cspecular:高光反射。这里的高光反射是一种经验模型,并不完全符合真实世界的高光反射。
cspecular = (clight·mspecular)max(0, v·r) gloss
gloss是材质的光泽度,控制高光区域的大小;mspecular是材质的高光反射颜色;clight是光源的颜色和强度。
Blinn-Phong光照模型
Blinn在计算高光反射时与Phong模型不同。
Blinn模型引入一个新的矢量h,他是通过对v和I取平均再归一化得到的。
cspecular = (clight · mspecular)max(0, n·h)gloss
半兰伯特模型
cdiffuse = (clight·mdiffuse)(0.5(n·I)+0.5)
把n·I的结果从[-1, 1]映射到了[0, 1],在背光面(原本漫反射为0的地方)也有了明

本文介绍了Unity中的基础光照模型,包括Phong、Blinn-Phong和半兰伯特模型,详细阐述了环境光、自发光、漫反射和高光反射的计算方式。同时讨论了逐顶点光照与逐像素光照的区别和选择,提供了核心代码示例。

1331

被折叠的 条评论
为什么被折叠?



