上篇主要讲的是unity中的光照模型及其原理,还有几种光照类型(自发光、环境光、漫反射、高光反射),后面几篇文章就开始在unity中实现这几种光照类型,本篇在unity实现自发光、环境光。
一、unity中的环境光和自发光
在标准光照模型中,环境光和自发光的计算是最简单的。
环境光可以在Window->Rendering->Lighting Settings->Ambient Source/Ambient Color/Ambient Intensity中控制。在shader中,我们只需要通过unity内置变量UNITY_LIGHTMODEL_AMBIENT就可以得到环境光的颜色和强度信息。
而大多物体是没有自发光特性的,如果要计算自发光非常简单,只需要在片元着色器输出最后的颜色之前,把材质的自发光emission计算好添加到输出颜色即可。
拓展:
这里如果要让物体全部区域都自发光,直接添加自发光颜色即可。如果要在某些特定区域去自发光,比如一个玩家模型,头上有一颗宝石,只让宝石拥有自发光,下图是没有自发光效果的原图:
1. 要添加自发光效果那么首先需要加上一张美术做好的黑白通道图,白色区域是宝石的区域,其他地方全黑(原理是白色各向量分量颜色默认值是1,黑色是0,所以和其他参数进行相乘后,黑色区域最后结果始终是0,加到片元输出颜色中没有变化,白色是1,乘以定义的自发光颜色还是自发光的颜色值),如下图: