US3S1L4——Phong式高光反射光照模型
US3S1L4——Phong式高光反射光照模型
本章代码关键字
1 | _WorldSpaceCameraPos //观察者的位置(摄像机的位置) |
Phong式高光反射光照模型
来历:高光反射光照模型没有单一的发明者,因为有多种计算的方式
和半兰伯特光照模型一样,是经过很多从业者的研究和发展而演化出来的
其中比较关键的几位贡献者为
- Phong光照模型的提出者:裴祥风(Bui-Tuong Phong,越南裔美国计算机学家)
- Blinn-Phone光照模型的提出者:吉姆·布林(Jim Blinn,美国计算机科学家)
原理:Phong式高光反射光照模型的理论是:
基于光的反射行为和观察者的位置决定高光反射的表现效果
认为高光反射的颜色和光源的反射光线以及观察者位置方向向量夹角的 值成正比
并且通过对余弦值取n次幂来表示光泽度(或反光度)
指的一提的是,Phong式高光反射模型不会单独使用,单独使用会得到一个黑色的带高光的高光效果,这和我们实际期望的光照效果不匹配
我们会在后面的Phong式光照模型中,和兰伯特光照模型一起使用,得到最终的光照效果
Phong式高光反射光照模型的公式
公式:
- 得到的结果就是
- 光泽度是幂运算,假设光泽度为 ,相当于:
如何在Shader中获取公式中的关键信息
- 观察者的位置(摄像机的位置):
_WorldSpaceCameraPos
- 相对于法向量的反射向量 方法:reflect(入射向量, 顶点法向量) 返回反射向量
- 指数幂 方法:pow(底数, 指数) 返回计算结果
其他关键信息获取方式和兰伯特光照模型差不多,参考:如何在Shader中获取公式中的关键信息
Phong式高光反射模型的实现
- 逐顶点光照
- 逐片元光照
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!