记录 针对spin和龙骨的2d影子 不改美术的低性能损耗方案

0d7056a11f99c3848c10136bce5804f
其实很简单 用一个摄像机拍摄鱼 然后用这个摄像机的rendertexture给一个精灵作为渲染层
再用一张图做影子层 影子层稍微偏移下就行了

1赞

你们美术不把影子做进去的吗

一条鱼一个摄像机?

不错的方案

两个相机不还是双倍drawcall

用一个摄像机拍摄所有鱼 然后那个渲染出来的rendertexture 分别给两个精灵一个是渲染本来的鱼层的 另一个是用来渲染影子的

并不会啊 因为渲染完鱼之后 影子的图直接拿内个纹理去绘制就行了~

场上2条鱼一般情况下一只鱼一张图集,一个相机渲染鱼另一个相机影子这不就4个drawcall了,并不是把rt渲染在一个sprite上就只有一个drawcall

那影子全部在最下面了

没毛病 假设的情况就是鱼在同一层 如果鱼和鱼之间有层级 影子叠加的情况 影子可以叠倒鱼身上的话 感觉改spin shader就行了
采样的时候采样两次
vec4 s = 偏移的采样
s 涂黑透明
vec4 t = 采样原版本的鱼
t盖到s上

同理也可以搞出不同鱼在不同层的效果(上层鱼在下层的上面 平级鱼的影子不会叠加 上层鱼的影子会叠在深海鱼的下层)就需要多个摄像机了

我的情况是只使用了一个摄像机
这个摄像机只拍鱼
然后复用了这个相机的rt纹理
影子只是涂黑了这个纹理

理论上即使鱼很多绘制影子也只增加了dc一次

《非技术》

我们的美术是9.9买的 没法像你说的让美术做。。。 算节约成本 本来也不是技术啊

哦,这样可以

通过这个方案确实能实现,但有个缺点是影子不能做缩放,没办法相对缩小,因为是整一个spriteframe。缩放的话有好的解决方案吗?