zoukankan      html  css  js  c++  java
  • mobile/diffuse跟点光源一起使用时光线怪异的原因

    新学Unity3D,很多都不明白。如果下面的理解有问题,肯请留言指出。

    刚遇到这么一个问题:场景里拖了一个长方体,上了一个Mobile/Diffuse的材质,在长方体顶部加了一个点光源,移动点光源时,发现长方体的光照很怪异,移动到两边时近亮远暗,但是移动到长方体上方中间位置时,整个长方体的上表面一个明暗度。

    看到Mobile/Diffuse源码的注释明白了原因:

     fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH

    这个shader,只能支持一个平行光,其它的光源会按照逐顶点的shader来计算光照。

    也就是说,我那个场景里,光照其实是按照逐顶点(Mobile-VertexLit.shader)来计算的。当点光源在长方体两边时(比如左侧),因为距离左侧的顶点比较近,所以光线强,距右侧顶点比较远,所以光线弱,中间的像素做插值,所以看起来光照是正常的。

    但是当点光源位于长方体正上方时,因为距离左右两侧的顶点距离一样,比如左侧顶点光线强度是0.5,右侧也是0.5,这样的话,中间的像素做插值,都会变成0.5,因此才会看到整个表面光照强度一样。

  • 相关阅读:
    1048 石子归并
    高精度算法小结
    3117 高精度练习之乘法
    UVa 11809
    3115 高精度练习之减法
    3116 高精度练习之加法
    “da shen” in my heart
    爱是怀疑!
    普通disco
    崇拜
  • 原文地址:https://www.cnblogs.com/yaohj/p/4919955.html
Copyright © 2011-2022 走看看