半兰伯特光照模型
由于使用漫反射光照的时候 在光照面和半光照面结合处出现了锯齿形状,影响模型的效果,Value公司 提出一种技术,在原兰伯特光照模型基础上做出了修改解决了漫反射中的的问题,依次被称为 半兰伯特光照模型 。 广义半兰伯特计算公式: (C * M )(α( )+β) 没有采用max 函数来防止点积为负值,采用的是α倍的缩放和β倍的偏移。一般情况下,α和β的值均为0.5 这样也可以将结果从[-1,1]映射到[0,1],这样在被光面 也可以有明暗变化(不同的点积结果会映射成不同的值),而不是像之前那样都为0在被光面。 半兰伯特模型 是一种是视觉加强技术,没有物理依据的。 与漫反射的逐像素光照相比,只是修改了片元函数中漫反射的计算 Shader "Custom/HalfLambert" { Properties { _DiffuseColor("Color",Color)=(1.0,1.0,1.0,1.0) } SubShader { pass { Tags{"LightMode"="ForwardBase"} CGPROGRAM #pragma vertex vert #pragma fragment frag #include "Lighting.cginc" fixed4 _DiffuseColor; struct a2v { float4 vertPos:POSITION;