当前位置:   article > 正文

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

unity使用c++开发

3.半角向量和BlinnPhone
        相比前面的计算模型,这个计算模型更加简单,也更容易去调整渲染参数。它使用了入射光线和视线这两条射线中间的平均值,这就是半角向量。用这个向量和法线计算高光,然后投给视觉光线信息,这样计算出来的结果会让高光更加平滑一些。这种高光计算方式的光照模型叫做BinnPhone,如图4-7所示。
下面我们来编写一段BlinnPhone的光照模型实现,具体代码示例如下:

  1. Inline fixed4 LightingBlinnPhone(SurfaceOutput s, fixed3 lightDir,
  2. half3
  3. viewDir,fixed atten)
  4. {
  5. half3 h = normalize(lightDir + viewDir);
  6. fixed diff = max(0,dot(s.Normal, lightDir));
  7. float nh = max(0,dot(s.Normal,h));
  8. float spec = pow(nh,s.Specular*128.0) * s.Gloss;
  9. fixed4 c;
  10. c.rgb = (s.Albedo * _LightColor0.rgb * diff +
  11. _LightColor0.rgb * _SpecColor.rgb * spec) *
  12. (atten * 2);
  13. c.a = s.Alpha + _LightColor0.a * _SpecColor.a * spec * atten;
  14. return c;
  15. }

4.4.3 什么是材质

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/665478
推荐阅读
相关标签
  

闽ICP备14008679号