本文由@唐三十胖子出品,转载请注明出处。
文章链接:https://blog.youkuaiyun.com/iceSony/article/details/84349017
这篇文章将总结和提炼《Unity Shader入门精要》的第六章“Unity中的基础光照”的内容。
通过这篇文章,你可以知道
1)Phong公式介绍
2)高光反射的逐顶点光照模型
3)高光反射的逐像素光照模型
4)高光反射的Blinn-Phong光照模型
一.Phong公式介绍
Phong公式:高光反射颜色=光的颜色*高光反射系数*max(0,反射光在视角方向的投影)^反射度
(ShaderLab编写中,高光反射系数与反射度都是在属性中定义的)
那么反射光与视角方向怎么获取呢?
通过上一章节的学习我们知道NORMAL语义是模型空间法线,_WorldLightPos0是世界空间光照方向
可以通过内置函数reflect(法线,光照方向)
由于获取反射方向由于光线i是指向顶点的所以我们relect最后要加个负号:)
视角方向其实Unity中也有相关获取方式:_WorldSpaceCameraPos.xyz
好了有了这些参数我们开始实现吧。
二.高光反射的逐顶点光照
第一步设置属性
Properties { _Specular("反射系数",Color) = (1.0,1.0,1.0,1.0) _Gloss("高光区域",Range(8, 256)) = 20 }
第二步设置pass的调用与光照模式(结构体和漫反射光照没什么区别)<