1.2.0的阴影问题反馈

反馈几个用起来不方便的地方:
1.新版本的阴影投射对unlit材质搞种族歧视啊。如果一个cube使用的是unlit材质的话,那么他就无法被投射出影子,比如我的地面使用了unlit的材质,那么我的人物是无法被投射出影子到这个地面上的,因为Unlit的effect里好像根本就没有写影子的投射计算

  1. ShadowMap的参数里有
    OrthoSize(影子的范围)
    Near, far (距离光源最近最远的范围内投射出影子)
    当你设置完之后,点击光源那个节点,就能看到一个包围盒标识出了这个矩形范围内的物体会投射出影子。这个包围盒确实很直观。
    但是这个设计思路简直奇葩。试想一下,假设我的主光源在A点。然后我的摄像机在B点摄像到了物体。或者在C点摄像到了物体。但是因为B点的物体距离主光源近,所以有影子,C点远所以没有影子。这个就很奇葩。这个 影子的包围盒怎么着也应该是跟着摄像机走的才合理啊。摄像机没有照射到的B点就算在光源的包围盒里有影子也是没有意义的,我又看不到,反而在摄像机视野里的C点因为不在包围盒里而没有影子。虽然我可以把主光源放到摄像机底下,但是多做了一步操作,十分不爽。

3.standard材质和unlit材质的效率对比尤其可怕。在oppo r9这种低端机器上,我红线框处的这个板子用Standard材质,直接卡成30帧,但是我换成了unlit之后慢慢30帧,这2个cube才十几个面,真是可怕。

4.cocos的effect写法和文档十分匮乏,干脆出本书算了。

你说的第一条:影子的包围盒不能跟着摄像机走,也不可以吧光源放在摄像机里,这样移动摄像机时,影子会变。而实际上影子是不会因为你在什么地方或者什么方向拍照而变化的。但是Near, far 这2个属性可以指摄像机,即离摄像机远的影子可以不用绘制。官方的这2个属性也是存在问题,比如直线光,一般是不动的,如果far值不够远,那么摄像机移过去后,没有影子就很尴尬。还有官方文档中已经说了unlit是不支持光照的(编辑器内置了几种常见类型的材质,无光照的 unlit、基于物理光照的 standard、skybox、粒子、sprite 等;
这里列一下最常用的 standard 各项参数的意义和用法: ----- 摘自官方文档)
第四条:很有必要,支持