Unity与C++网络游戏开发实战:基于VR、AI与分布式架构 【2.0】

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 * 

你可能感兴趣的:(unity,vr,人工智能,c++,Unity与C++网络游戏开发,基于VR,AI与分布式架构)