unity产生阴影的几种方式

这里说一下unity中产生阴影的几种常见方式,性能不一,效果不一;

1:贴图方式 在模型下方贴一张阴影贴图作为子物体,因为不涉及光照,故其性能消耗几乎可以省略。但是当模型要投影到水平面不一样高的地面上时,就会暴露了。

2:projector投影 在unity中导入effects资源包,其中包含投影shader和材质球还有预制体,可以直接使用。效率上高于实时光,并且投影可以在不同高度的平面上,但是因为投影的实际上是一张图片,并不能非常好的体现模型的影子。效果如下:
unity产生阴影的几种方式_第1张图片
unity产生阴影的几种方式_第2张图片

3:spotlight 聚光灯,实时光,效果上没啥问题,性能有待优化(其他实时光也OK)
unity产生阴影的几种方式_第3张图片

4:renderTexture+projector 伪实时阴影,一种不错的解决方案。基本原理就是新建一个camera,然后只摄取要投影的模型到镜头中,然后将新建的renderTexture放到camera的targetTexture中,然后将这一rendertexture放入projector的shader中
unity产生阴影的几种方式_第4张图片
unity产生阴影的几种方式_第5张图片
unity产生阴影的几种方式_第6张图片
这里需要注意的是projector材质球中的材质属性中的wrapMode要由repeat改成clamp。不然就会如下图:
unity产生阴影的几种方式_第7张图片
unity产生阴影的几种方式_第8张图片

5:shadowMap 阴影映射 这个就比较复杂了,与深度图有关。暂时先放一下,如果后续自己想更近一步,再来研究

你可能感兴趣的:(unity3d)