赞
踩
3.半角向量和BlinnPhone
相比前面的计算模型,这个计算模型更加简单,也更容易去调整渲染参数。它使用了入射光线和视线这两条射线中间的平均值,这就是半角向量。用这个向量和法线计算高光,然后投给视觉光线信息,这样计算出来的结果会让高光更加平滑一些。这种高光计算方式的光照模型叫做BinnPhone,如图4-7所示。
下面我们来编写一段BlinnPhone的光照模型实现,具体代码示例如下:
- Inline fixed4 LightingBlinnPhone(SurfaceOutput s, fixed3 lightDir,
- half3
- viewDir,fixed atten)
- {
- half3 h = normalize(lightDir + viewDir);
- fixed diff = max(0,dot(s.Normal, lightDir));
- float nh = max(0,dot(s.Normal,h));
- float spec = pow(nh,s.Specular*128.0) * s.Gloss;
- fixed4 c;
- c.rgb = (s.Albedo * _LightColor0.rgb * diff +
- _LightColor0.rgb * _SpecColor.rgb * spec) *
- (atten * 2);
- c.a = s.Alpha + _LightColor0.a * _SpecColor.a * spec * atten;
- return c;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。