unity产生阴影的几种方式

时间:2024-05-20 21:57:42

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

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

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

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

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

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