RenderTexture 渲染场景带透明度物体到图片上明显变淡了

【cocos版本】2.1.3
【描述】
修改自cocos 示例07_render_to_sprite
场景中金币node的opacity改为100,
并加入自己一张带透明度的图,重复叠加,右边明显比左边淡一些,猜测是渲染出来的东西已经做了相当于alpha预乘的事情,然后再次渲染到新的sprite上的时候又做了一遍alpha的一个应用 , 效果如下:
【图片】


【附件工程】
render_to_sprite.zip (817.7 KB)

这是正常的,render texture 本身如果要用到透明度的话,需要使用预乘(把 render texture 本身设置为预乘模式进行渲染)

用预乘还是不行,srcAlpha变成了srcAlpha*srcAlpha, 我把builtin-2d-sprite.effect的片元函数里面加了
color.a = sqrt(color.a); color.r /= color.a ; color.g /= color.a; color.b /= color.a;
将alpha重置回去处理了一下,表现正常了。

修改后的效果:


修改后的工程:
render_to_sprite.zip (156.7 KB)

用预乘的话,render target 上的所有图都得是预乘的,效果才是对的