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,因此才会看到整个表面光照强度一样。

原文地址:https://www.cnblogs.com/yaohj/p/4919955.html