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

  • 相关阅读:
    Linux 文件查找
    Linux-Varnish缓存
    Linux-部署Hadoop环境
    Linux-部署MFS分布式文件系统
    Linux-部署Jumpserver跳板机
    Linux-部署Heartbeat高可用
    Linux-Mysql5.7之字段约束,索引,外键
    Linux-Mysql常用命令(下)
    Linux-Mysql常用命令(上)
    Python-常用模块详解
  • 原文地址:https://www.cnblogs.com/yaohj/p/4919955.html
Copyright © 2011-2022 走看看