计算边缘光照

原理简单说一下,主要是用来计算边缘光照的,首先通过视线与法线的夹角来找到模型的边缘,然后再根据距离的远近来控制发射光的强度。

 

[cpp] view plain copy
 
  1. half rim = 1.0 - saturate(dot (normalize(IN.viewDir), IN.worldNormal));  
  2. o.Emission = _RimColor.rgb * pow (rim, _RimPower);  



 

IN.viewDir是当前视角向量,IN.worldNormal是物体的法线。dot是计算视角和法线的点积,等于视角和法线夹角的cos值,Cos的值域是1-0,1-cos就成了0-1,在夹角90度时达到最大值,正好用来模拟侧光的强度(与视角成90度的部分光线最强,就是边缘光了)
把这个值的变化率用一个pow函数(rim的_rimPower次方)进行放大,就能强化边缘发亮的效果。

 

 

http://blog.csdn.net/silangquan/article/details/39580631

posted on 2017-05-24 09:45  jiahuafu  阅读(469)  评论(0编辑  收藏  举报

导航